我有2个字典(d3和d4),我想看看其中一个字典(d3)的值是否在另一个字典(d4)的键中,在这种情况下,将该字典(d4)的值保存到一个新列表。
d3 = {0: ['mo', 'A', 'la'], 1: ['tel', 'A', 'Al'], 2: ['Jak', 'E', 'Pum']}
d4 = {'ko' : 'Paul', 'la' : 'John', 'si' : 'Peter', 'Al' : 'Laura', 'gh' : 'Will'}
a3 = d3.values()
b3 = d3.keys()
a4 = d4.values()
b4 = d4.keys()
t = 0
for i in a3:
if i not in b4 == -1:
continue
else:
taxa = a4[t]
t += 1
print taxa
有了这段代码,我没有得到预期的结果,应该是:
taxa = ['John', 'Laura']
在d4的键中没有d3值的情况下,如果它可以在列表中返回“未知”,那就太好了。因此,这种情况下的理想结果是这样的:
taxa = ['John', 'Laura', 'unknown']
我搜索了其他问题,尽管其中一些是相似的,但我没有找到任何一个解释这种情况的问题
最佳答案
您可以按照以下方法进行操作:
>>> d3 = {0: ['mo', 'A', 'la'], 1: ['tel', 'A', 'Al'], 2: ['Jak', 'E', 'Pum']}
>>> d4 = {'ko' : 'Paul', 'la' : 'John', 'si' : 'Peter', 'Al' : 'Laura', 'gh' : 'Will'}
>>> taxa = []
>>>
>>> for l in d3.values():
... v = next((d4[item] for item in l if item in d4), 'Unknown')
... taxa.append(v)
...
>>> taxa
['John', 'Laura', 'Unknown']
next()
将从传递的生成器表达式中返回第一个匹配的元素。如果未找到任何内容,将返回'Unknown'
。这些可以合并为单个列表理解:
>>> [next((d4[item] for item in l if item in d4), 'Unknown') for l in d3.values()]
['John', 'Laura', 'Unknown']
关于python - 遍历两个字典并在Python中获取列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34309082/