首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从一个列表中查找另一个列表中的项目?

从一个列表中查找另一个列表中的项目?
EN

Stack Overflow用户
提问于 2018-12-11 02:57:29
回答 1查看 68关注 0票数 1

我正在使用Python进行文件解析,并且我已经创建了两个字典来表示两个不同的CSV文件。我尝试从一个列表中获取ID号,看看它是否存在于第二个列表中,并且(如果存在)返回第二个列表中的记录的副本,并将其存储在第三个列表中。

例如:

代码语言:javascript
复制
List1:
[{ ID: 1, FirstName: John, LastName: Smith},
{ ID: 2, FirstName: Bob, LastName: Dole},
{ ID: 3, FirstName: Elizabeth, LastName: Jenkins}]

List2:
[{ ID: 1, HireDate: '08/24/1997' },
{ ID: 2, HireDate: '09/27/2016' },
{ ID: 17, HireDate: '01/13/2013' }]

我想说:“如果您在List2中看到来自List1的ID,请返回列表2的条目。”

换句话说,给我返回一个名为"ID_found“的新列表并追加:

代码语言:javascript
复制
[{ ID: 1, HireDate: '08/24/1997' },
 { ID: 2, HireDate: '09/27/2016' }]

现在,我正在尝试这样的东西:

代码语言:javascript
复制
ID_found = []
for d in List1:
    for p in List2:
        if d["ID"] in List2:
            ID_found.append(p)

我知道这有一个非常简单的解决方案,但我已经尝试了我能想到的所有方法,似乎都不起作用。任何帮助都将不胜感激!

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-12-11 03:06:13

您似乎已将CSV文件解析为(字典)列表,而不是字典。要快速查找列表2中的in,请创建一个实际的字典,将in映射到列表2中的条目,如下所示:

代码语言:javascript
复制
dict2 = {e['ID']: e for e in List2}

这使用了字典理解。然后,使用它从列表1中查找ids:

代码语言:javascript
复制
ID_found = [dict2[d['ID']] for d in List1 if d['ID'] in dict2]

这是一个list comprehension,其中只包含d['ID'] in dict2为true的元素,即id出现在字典的键中,即第二个列表中的id。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53711937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档