将列表项与字典项进行比较,如果字典中存在该项,则打印出该项的值

2024-04-28 14:41:21 发布

您现在位置:Python中文网/ 问答频道 /正文

示例代码:

my_dict = {'ABC':'Apple','DEF':'Mango','GHI':'Pear','JKL':'Orange','MNO':'Plum'}
lst_x =  ['DEF','GHI']

预期结果:

['Mango', 'Pear']

Tags: 代码示例applemydefjkldictpear
3条回答

您可以使用operator.itemgetter一次检索多个键:

from operator import itemgetter

my_dict = {'ABC':'Apple','DEF':'Mango','GHI':'Pear','JKL':'Orange','MNO':'Plum'}

lst_x = ['DEF','GHI']
# in case, if there's a chance, that lst_x would get some of the keys, that are not in my_dict - add the below line:
# lst_x=set(lst_x).intersection(set(my_dict.keys()))
res=itemgetter(*lst_x)(my_dict)

产出:

>>> res

('Mango', 'Pear')

一种方法是使用list comprehension来构造请求的列表。
本质上,我们在外循环中遍历list,在内循环中遍历dictionary,然后将list值与dictionary中的key值进行比较,如果有匹配项,则将关联的key值保存在新的输出列表中

下面的代码段如上所述工作:

my_dict = {'ABC':'Apple','DEF':'Mango','GHI':'Pear','JKL':'Orange','MNO':'Plum'}
lst_x = ['DEF','GHI']

out = [value for element in lst_x for key, value in my_dict.items() if element == key]
print(out)

运行时,它会打印:

['Mango', 'Pear']

您可以使用一个简单的循环,询问是否有具有相同值的键并打印它,例如:

my_dict = {'ABC':'Apple','DEF':'Mango','GHI':'Pear','JKL':'Orange','MNO':'Plum'}
lst = ['ABC','DEF','GHI','JKL','MNO']

for key in lst:
    if key in my_dict.keys():
        print(key, '->' , my_dict[key])

>>> ABC -> Apple
>>> DEF -> Mango
>>> GHI -> Pear
>>> JKL -> Orange
>>> MNO -> Plum

相关问题 更多 >