如何比较两个词典列表

2024-05-16 20:54:16 发布

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

list1:


[
    {'id': 1, 'location': 'Mumbai', 'job_description': 'python'},
    {'id': 2, 'location': 'Bengaluru', 'job_description': 'software engineer'}
]


list2:

[
    {'preferred_location': 'Bengaluru', 'skills': 'python'},
    {'preferred_location': 'Hyderabad', 'skills': 'java'},
    {'preferred_location': 'Cochin', 'skills': 'angular'}
]

如何根据位置比较第一个列表和第二个列表。 从第一个位置列表应该与第二个首选位置列表匹配。你知道吗

预期结果是

        [
            {'id': 2, 'location': 'Bengaluru', 'job_description': 'software engineer'}
        ]

因为第一个列表的“位置”与第二个列表2的“首选位置”匹配 只会显示foo


Tags: id列表jobsoftwarelocationdescriptionjavaskills
3条回答

您可以使用列表理解,将词典保存在位置匹配的list1中:

r1 = range(len(list1))
r2 = range(len(list2))
[list1[j] for i in r2 for j in r1 if list1[j]['location'] ==
                                     list2[i]['preferred_location']]


[{'id': 2, 'location': 'Bengaluru', 'job_description': 'software engineer'}]

让我们用列表理解来解决这个问题。你知道吗

list1 =[{'id': 1, 'location': 'Mumbai', 'job_description': 'python'},
    {'id': 2, 'location': 'Bengaluru', 'job_description': 'software engineer'}]


list2=[{'preferred_location': 'Bengaluru', 'skills': 'python'},
    {'preferred_location': 'Hyderabad', 'skills': 'java'},
    {'preferred_location': 'Cochin', 'skills': 'angular'}]

list2_locations= [i['preferred_location'] for i in list2]

list2_locations
     ['Bengaluru', 'Hyderabad', 'Cochin']

list1_final = [i for i in list1 if i['location'] in list2_locations]

list1_final
     [{'id': 2, 'job_description': 'software engineer', 'location': 'Bengaluru'}]

你也可以用熊猫

df1 = pd.DataFrame(
[
{'id': 1, 'location': 'Mumbai', 'job_description': 'python'},
{'id': 2, 'location': 'Bengaluru', 'job_description': 'software engineer'}
]).set_index('location').reset_index()


df2 = pd.DataFrame(
[
{'preferred_location': 'Bengaluru', 'skills': 'python'},
{'preferred_location': 'Hyderabad', 'skills': 'java'},
{'preferred_location': 'Cochin', 'skills': 'angular'}
]).set_index('preferred_location').reset_index()


df3 = df2.merge(df1, how='inner', left_on='preferred_location', right_on='location')

del df3['location']

df3.to_dict('records')

相关问题 更多 >