因此,我有两个字典,对于它们的通用键,我想找到各个列表中每个元素的区别,输出中的顺序无关紧要。
这是一个小例子
x={
'1' : [1,2,3],
'2' : [2,9]
}
y={
'1' : [4,5],
'3' : [8,9]
}
# Common key is '1' , so z is the list of the subtraction of elements of key '1'
>> expected_output = [-3, -2, -1, -4, -3, -2]
= [1-4,2-4,3-4, 1-5,2-5,3-5]
这里是设置具有许多公共键和非公共键的较大词典的示例
import random
x={}
y={}
num_same_keys = 100
num_diff_keys = 200
## Generating common keys with arbitrary number of elements
common_key = random.randint(0,10000)
for _ in range(num_same_keys) :
while common_key in x : common_key = random.randint(0,10000)
x[common_key] = [ random.randint(0,1000) for _ in range(random.randint(1,10)) ]
y[common_key] = [ random.randint(0,1000) for _ in range(random.randint(1,10)) ]
## Generating different keys with arbitrary number of elements
x_key = random.randint(0,10000)
y_key = random.randint(0,10000)
for _ in range(num_diff_keys) :
# Adding to x
while (x_key in x) and (x_key in y) : x_key = random.randint(0,10000)
x[x_key] = [ random.randint(0,1000) for _ in range(random.randint(1,10)) ]
# Adding to y
while (y_key in x) and (y_key in y) : y_key = random.randint(0,10000)
y[y_key] = [ random.randint(0,1000) for _ in range(random.randint(1,10)) ]
目前,我尽力通过将键作为一个集合调用
&
来对其进行优化,然后扩展每个键的列表。但是我不确定它是否是最佳的。
def f1(x,y):
z = []
for element in x.keys() & y.keys():
z.extend([xval-yval for xval in x[element] for yval in y[element] ])
return z
outputlist = f1(x,y)