他の辞書と比較する必要がある一連の辞書を含むリストがあります。
次の形式があります (キーと値に特定の形式やパターンはありません。これらはランダムに選択された例です)。
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 内の辞書の間で交差するキーだけです。