首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典难题

字典难题
EN

Stack Overflow用户
提问于 2018-06-16 06:32:10
回答 1查看 37关注 0票数 1

好的所以..。我下面有些字典不想合作。字典"a“表示存储在我们人力资源数据库中的数据。字典"b“表示存储在AS400 iSeries数据中的数据。注意:这些不是真值--目标是使用至少2个字段将"a“中的一个键与"b”中的一个键匹配,同时仍然能够引用该键。

换句话说,在我匹配了2个值之后,我希望能够创建一个新的字典,将a的键与b的键匹配:

代码语言:javascript
复制
match_dictionary[*key from a*] = (*key from b*)
a.pop(*key from a*)
b.pop(*key from b*)

下面是代码:

代码语言:javascript
复制
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')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-16 06:47:09

我把它作为一个列表的关键,以防你有不止一个匹配。

代码语言:javascript
复制
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)

但要将它更改为

代码语言:javascript
复制
            new_dict[a_name] = b_name

如果你愿意的话。那么你就不需要默认的dict了。

这就产生了:

代码语言:javascript
复制
defaultdict(list,
            {'ada123456': ['ADAMJ'],
             'jus567890': ['JBRADY'],
             'mul345678': ['THOMASM']})

如果您想要一个普通的dict,只需将其包装在dict()中即可

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50885545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档