我基本上想检查一本字典中的值是否是另一本中的键。
例如,我有两个字典
a = {armani: jeans, dolce: gabbana}
b = {jeans: robo, jobs: versace}
我编写了代码进行检查,以便它仅获取作为另一个字典中键的值。因此,在这种情况下,我只想显示{armani: robo}
,因为两者中都已经有牛仔裤。就像第二个字典中的牛仔裤值一样,它成为新的最终字典中的主要值
这是代码:
{k:v for k,v in a.items() if v in b.items()}
但是它不起作用,我也不知道如何检查值是否是另一个列表中的键
答案 0 :(得分:0)
这应该有效:
{k:b[v] for k,v in a.items() if v in b}
您只是缺少两个元素:
if v in b.items()
,因为Python会将if v in b
解释为“如果v在b的键中”。b[v]
。答案 1 :(得分:0)
或者,您可以使用设置的交集进行过滤。
a = {'armani': 'jeans', 'dolce': 'gabbana'}
b = {'jeans': 'robo', 'jobs': 'versace'}
c = set(a.values()).intersection(b)
d = {k:b[k] for k in c}
# or as a one-liner
e = {k:b[k] for k in set(a.values()).intersection(b)}
这可能比遍历整个字典要快。
答案 2 :(得分:0)
我认为您需要:
a = {"armani": "jeans", "dolce": "gabbana"}
b = {"jeans": "robo", "jobs": "versace"}
res = {k1:v2 for k1,v1 in a.items() for k2,v2 in b.items() if v1 ==k2}
print(res)
输出:
{'armani': 'robo'}