获取也在defaultdict中的值中的键

时间:2019-04-04 23:21:14

标签: python-3.x defaultdict

我正在尝试提取defaultdict值中当前还存在的键。

例如,

a = {1: [1,3,5], 2: [1,3], 3: [3], 4:[5]}应该提供13,因为这些值在值中-即11,3,5

我写了这段代码,但它没有打印重复的密钥:

c = set():
for k, v in a.items():
if a[k] == v
c.add(k)

但是它不起作用,我认为是因为它不比较列表中的每个单独项目,即1: [1,3,5]

如何解决?

2 个答案:

答案 0 :(得分:2)

您快到了;您只需要稍微修改一下条件即可:

a = {1: [1,3,5], 2: [1,3], 3: [3], 4:[5]}
c = set()
for k, v in a.items():
    if k in v:
        c.add(k)

这可以简化为设定的理解:

a = {1: [1,3,5], 2: [1,3], 3: [3], 4:[5]}
c = {k for k, v in a.items() if k in v}

答案 1 :(得分:0)

您可以使用嵌套的集合理解,该集合迭代在dict值的子列表上并输出作为dict的键的列表项:

{k for l in a.values() for k in l if k in a}

这将返回:

{1, 3}