如何在两个数组中找到匹配项,其中包含字典?
How can I find matches in two arrays with dictionaries in them?
我有以下问题。我想用字典比较两个列表并找到匹配项。
架构列表 A:
[
{
authorID: string,
articleID: string
}
]
架构列表 B:
[
{
authorID: string,
firstName: string,
lastName: string
}
]
列表A的长度为1653,列表B的长度为1344。
这是我用来比较列表和重新保存匹配项的代码。
def unitedListArticleAuthor(listA, listB):
new_list = []
for article in listA:
for author in listB:
if article["authorID"] == author["authorID"]:
new_list.append({
"articleID": article["articleID"],
"authorID": article["authorID"],
"firstName": author["firstName"],
"lastName": author["lastName"],
})
现在新列表的长度是1667。这意味着一定是某处出错了,因为列表A是最大的,只需要匹配列表B。只需要匹配作者ID在每篇文章中添加作者姓名。
我的错误是什么?
正如 Sayse 所说,很可能存在同一个 authorID 的多个实例。
您似乎很确定情况并非如此,但请尝试添加这样的 break
语句:
def unitedListArticleAuthor(listA, listB):
new_list = []
for article in listA:
for author in listB:
if article["authorID"] == author["authorID"]:
new_list.append({
"articleID": article["articleID"],
"authorID": article["authorID"],
"firstName": author["firstName"],
"lastName": author["lastName"],
})
break
我有以下问题。我想用字典比较两个列表并找到匹配项。
架构列表 A:
[
{
authorID: string,
articleID: string
}
]
架构列表 B:
[
{
authorID: string,
firstName: string,
lastName: string
}
]
列表A的长度为1653,列表B的长度为1344。
这是我用来比较列表和重新保存匹配项的代码。
def unitedListArticleAuthor(listA, listB):
new_list = []
for article in listA:
for author in listB:
if article["authorID"] == author["authorID"]:
new_list.append({
"articleID": article["articleID"],
"authorID": article["authorID"],
"firstName": author["firstName"],
"lastName": author["lastName"],
})
现在新列表的长度是1667。这意味着一定是某处出错了,因为列表A是最大的,只需要匹配列表B。只需要匹配作者ID在每篇文章中添加作者姓名。
我的错误是什么?
正如 Sayse 所说,很可能存在同一个 authorID 的多个实例。
您似乎很确定情况并非如此,但请尝试添加这样的 break
语句:
def unitedListArticleAuthor(listA, listB):
new_list = []
for article in listA:
for author in listB:
if article["authorID"] == author["authorID"]:
new_list.append({
"articleID": article["articleID"],
"authorID": article["authorID"],
"firstName": author["firstName"],
"lastName": author["lastName"],
})
break