好的所以..。我下面有些字典不想合作。字典"a“表示存储在我们人力资源数据库中的数据。字典"b“表示存储在AS400 iSeries数据中的数据。注意:这些不是真值--目标是使用至少2个字段将"a“中的一个键与"b”中的一个键匹配,同时仍然能够引用该键。
换句话说,在我匹配了2个值之后,我希望能够创建一个新的字典,将a的键与b的键匹配:
match_dictionary[*key from a*] = (*key from b*)
a.pop(*key from a*)
b.pop(*key from b*)下面是代码:
import collections
a = {'ada123456' : ('123','adam','jones') , 'jus567890':('567','justin','brady') , 'mul345678':('345','muller','thomas')}
b = {'ADAMJ' : ('123','jones') , 'JBRADY':('justin','brady') , 'THOMASM':('345','muller','thomas')}
if [i for i in [(x[1],x[2]) for x in [a[c] for c in a.keys()]]] in [b[d] for d in b.keys()]:
print('Why won\'t this work?')
if ('justin','brady') in [b[d] for d in b.keys()]:
print('\nthis works though')
if ('justin','brady') in [(x[1],x[2]) for x in [a[c] for c in a.keys()]]:
print('\nthis too')发布于 2018-06-16 06:47:09
我把它作为一个列表的关键,以防你有不止一个匹配。
new_dict = defaultdict(list)
for b_name, b_values in b.items():
for a_name, a_values in a.items():
intersect = set(a_values).intersection(set(b_values))
if len(intersect) >= 2:
new_dict[a_name].append(b_name)但要将它更改为
new_dict[a_name] = b_name如果你愿意的话。那么你就不需要默认的dict了。
这就产生了:
defaultdict(list,
{'ada123456': ['ADAMJ'],
'jus567890': ['JBRADY'],
'mul345678': ['THOMASM']})如果您想要一个普通的dict,只需将其包装在dict()中即可
https://stackoverflow.com/questions/50885545
复制相似问题