Python比较不同值的指令集

2024-10-06 10:27:20 发布

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

我有两个听写列表,并想返回的项目有相同的id,但不同的标题。i、 e

list1 = [{'id': 1, 'title': 'title1'}, {'id': 2, 'title': 'title2'}, {'id': 3, 'title': 'title3'}]

list2 = [{'id': 1, 'title': 'title1'}, {'id': 2, 'title': 'title3'}, {'id': 3, 'title': 'title4'}]

将返回[{'id': 2, 'title': 'title2'}, {'id': 3, 'title': 'title3'}],因为list2和list1中的标题不同。在


Tags: 项目id标题列表titlelist2list1title2
3条回答
[dc for dc in list1 if dc['id'] in [d["id"] for d in list2] and dc not in list2]

不同的词典如果内容相等,就相等。所以你可以这样做:

for i in list1:
    if i not in list2:
        result.append(i)

我建议您重构您的设计,使其不是一个字典列表,而是两个id:title对的字典。该算法在这一点上是微不足道的,并且性能更好。在

代码示例(编辑以反映SilentGhost的正确断言):

titles1 = {1: "title1", 2: "title2", 3: "title3"}
titles2 = {1: "title1", 2: "not_title2", 3: "title3"}
for id, title in titles1.iteritems():
    # verify the key is in titles2, compare title to titles2[id]

将字典列表转换为id为键的字典的代码示例:

^{pr2}$

相关问题 更多 >