我在列表中有一个字典:
list1 = [{'Value': 'John','Key': 'Name'},{'Value':'17','Key': 'Number'}]
我有一个列表:
list2 = ['Name','Number']
如何检查 list2 中的值位于 list1 中。 如果存在,我需要列出值。
例如:如果存在Name,则打印“ John ”
答案 0 :(得分:1)
也请阅读评论:
for i in list2: #iterate through list2
for j in list1: #iterate through list of dictinaries
if i in j.values(): #if value of list2 present in the values of a dict then proceed
print(j['Value'])
答案 1 :(得分:1)
您可以使用for
循环。请注意,我为set
使用list2
来启用循环中的O(1)查找。
list1 = [{'Value': 'John','Key': 'Name'},{'Value':'17','Key': 'Number'}]
list2 = {'Name', 'Number'}
for item in list1:
if item['Key'] in list2:
print(item['Value'])
# John
# 17
答案 2 :(得分:1)
这是我的一线式建议,恕我直言。
第一个解决方案,其结果与list1
的排序顺序相同:
list1 = [{'Value': 'John','Key': 'Name'},{'Value':'17','Key': 'Number'}]
list2 = ['Name','Number']
values = [x['Value'] for x in list1 if x['Key'] in list2]
print(values)
# ['John', '17']
第二个解决方案,其结果与list2
的排序顺序相同:
list1 = [{'Value': 'John','Key': 'Name'}, {'Value':'17','Key': 'Number'}]
list2 = ['Number', 'Name']
values = [x['Value'] for v in list2 for x in list1 if x['Key'] == v]
print(values)
# ['17', 'John']
答案 3 :(得分:0)
首先,我会将您的list1
转变为命运:一本字典。
dict1 = {d['Key']: d['Value'] for d in list1}
然后,您可以简单地遍历list2
并在键存在的情况下打印值:
for key in list2:
if key in dict1:
print(dict1[key])
此打印:
John
17