【发布时间】:2021-09-27 07:02:31
【问题描述】:
我得到了这个循环,它遍历包含嵌套在“组”内的键“id”的 list_one。 另一个 list_two 也包含键“id”但没有嵌套。我要做的第一件事是验证它们是否彼此相等。如果没有,则继续循环。
我遇到的问题是对于 new_list 追加后,CA ids 多次相同。它们还被附加到另一个数组中并多次打印。
list_one = [
{
'name': 'CA',
'group':
{
'id': ['a12345', 'aa12']
}
},
{
'name': 'TE',
'group':
{
'id': ['b12345']
}
},
{
'name': 'DA',
'group':
{
'id': ['cab124']
}
}
]
list_two = [
{
'name': 'CA',
'id': ['ac123', 'bb12345']
},
{
'name': 'TE',
'id': 'abc123'
},
{
'name': 'DA',
'id': 'e123'
}
]
for list_A in list_one: # list_one is a list
for list_B in list_two: # list_two is a list
if list_A['name'] == list_B['name']:
if list_B['id'] not in list_A['group']['id']: #list_A and #list_B are a dictionary
for index, ids in enumerate(list_A['group']['id']): # using tuple to assign the values using the index
list_A['group']['id'][index] = list_B['id']
new_list.append(list_A)
我得到的输出:
[
{
'name': 'CA',
'group': {
'id':
[
['ac123', 'bb12345'],
['ac123', 'bb12345']
]
}
},
{
'name': 'TE',
'group': {
'id': [
['abc123']
]
}
},
{
'name': 'DA',
'group': {
'id': [
['e123']
]
}
}
]
预期输出:
[
{
'name': 'CA',
'group': {
'id': ['ac123', 'bb12345']
}
},
{
'name': 'TE',
'group': {
'id': ['abc123']
}
},
{
'name': 'DA',
'group': {
'id': ['e123']
}
}
]
【问题讨论】:
-
也许有更简单的方法可以使用 list_two id 替换 list_one 中的 id?
-
How to debug small programs。如果您正在使用 IDE现在是学习其调试功能或内置 Python debugger 的好时机。在程序中的关键点打印 stuff 可以帮助您跟踪正在发生或未发生的事情。 What is a debugger and how can it help me diagnose problems?
-
我在这里使用了调试,但我不明白是什么导致了这些问题。我不习惯 Python 和使用列表。
-
你的循环试图做什么?
-
它遍历两个列表,因此我可以使用密钥进行验证。最后一个循环设置了一个元组,我可以使用它来设置
id等于list_two 中的索引。这允许我附加多个id值。如果我不枚举它只会附加一个值。
标签: python list loops dictionary append