我有一个列表,其中包含一定数量的词典,我必须在其中与另一本词典进行比较。
它们具有以下形式(键和值没有特定的形式或模式,这些是随机选择的示例):
list1 = [
{'X1': 'Q587', 'X2': 'Q67G7', ...},
{'AB1': 'P5K7', 'CB2': 'P678', ...},
{'B1': 'P6H78', 'C2': 'BAA5', ...}]
dict1 = {
'X1': set([B00001,B00020,B00010]),
'AB1': set([B00001,B00007,B00003]),
'C2': set([B00001,B00002,B00003]), ...
}
我现在想要的是一个新的字典,它的键是:list1 中字典的值。并将dict1的值作为值。只有当键在比较字典中相交时才会这样做。
我通过以下方式做到了这一点:
nDicts = len(list1)
resultDict = {}
for key in range(0,nDicts):
for x in list1[key].keys():
if x in dict1.keys():
resultDict.update{list1[key][x]:dict1[x]}
print resultDict
所需的输出应采用以下形式:
resulDict = {
'Q587': set([B00001,B00020,B00010]),
'P5K7': set([B00001,B00007,B00003]),
'BAA5': set([B00001,B00002,B00003]), ...
}
这可行,但由于数据量如此之高,这需要很长时间。有一个更好的方法吗?
编辑:我已经稍微改变了输入值,唯一重要的是在 list1 中的字典和 dict1 中的字典之间相交的键。