基于列表值获取字典键的方法

3

我有一个值列表list1:

['A','B','C','D']

我有一个字典

{1: ['A','F'],2:['B','J'],3:['C','N'],4:['D','X']}

我希望能够获取列表中每个值的密钥:
我尝试了:
[dict1[x] for x in list]

然而,它会输出一个错误,因为我没有考虑到字典值是列表而不是单个值的事实。我该如何实现这一点?

我期望的输出是一个包含list1值的键的列表:

[1,2,3,4]
2个回答

5
您可以使用列表推导式:
[k for x in lst for k, v in d.items() if x in v]

例子:

lst = ['A','B','C','D']
d = {1: ['A','F'],2:['B','J'],3:['C','N'],4:['D','X']}

print([k for x in lst for k, v in d.items() if x in v])
# [1, 2, 3, 4]

4
您可以将字典展平并将其用作查找:
data = ['A','B','C','D']
d = {1: ['A','F'],2:['B','J'],3:['C','N'],4:['D','X']}
new_d = {i:a for a, b in d.items() for i in b}
result = [new_d[i] for i in data]

输出:

[1, 2, 3, 4]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接