将列表内的值与列表内的字典值进行比较

时间:2018-06-20 08:42:00

标签: python python-3.x

我在列表中有一个字典:

list1 = [{'Value': 'John','Key': 'Name'},{'Value':'17','Key': 'Number'}]

我有一个列表:

list2 = ['Name','Number']

如何检查 list2 中的值位于 list1 中。 如果存在,我需要列出

例如:如果存在Name,则打印“ John

4 个答案:

答案 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)

这是我的一线式建议,恕我直言。

  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']
    
  2. 第二个解决方案,其结果与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