我有两个清单。第一个(列表a)包含dicts列表,每个列表代表特定帖子的注释。他们都有相同的' id'值。第二个列表(列表b)仅包含dicts,这些dicts是帖子。
现在我需要创建一个名为' comments'对于b_list中的每个字典,并将a_list中的适当列表指定为值。因此,有针对性的列表是dict [' id']与post值相同的值。
a_list=[
[{'id':'123', 'user':'Foo'}, {'id':'123','user':'Jonny'}, ...],
[{'id':'456', 'user':'Bar'}, {'id':'456','user':'Mary'}, ...],
...
]
b_list=[{'post':'123','text': 'Something'}, {'post':'456', 'text': 'Another thing'}, ...]
那么最好和更蟒蛇的方式是什么呢?
答案 0 :(得分:0)
构建ID字典,然后浏览它们:
>>> a_list=[
... [{'id':'123', 'user':'Foo'}, {'id':'123','user':'Jonny'}, ],
... [{'id':'456', 'user':'Bar'}, {'id':'456','user':'Mary'},],
... ]
>>> b_list=[{'post':'123','text': 'Something'}, {'post':'456', 'text':'Another thing'}, ]
>>> d = {l[0]['id']:l for l in a_list}
>>> for item in b_list:
... item['comments'] = d[item['post']]
...
>>> import pprint
>>> pprint.pprint(b_list)
[{'comments': [{'id': '123', 'user': 'Foo'}, {'id': '123', 'user': 'Jonny'}],
'post': '123',
'text': 'Something'},
{'comments': [{'id': '456', 'user': 'Bar'}, {'id': '456', 'user': 'Mary'}],
'post': '456',
'text': 'Another thing'}]
答案 1 :(得分:0)
我假设在a_list
中,一个嵌套list
将具有相同的'id'
,每个ID只会有一个列表。
为实现此目的,请迭代b_list并检查a_list
中的匹配项。如果匹配,请将值添加到a_list
>>> a_list=[
... [{'id':'123', 'user':'Foo'}, {'id':'123','user':'Jonny'}],
... [{'id':'456', 'user':'Bar'}, {'id':'456','user':'Mary'}],
... ]
>>> b_list=[{'post':'123','text': 'Something'}, {'post':'456', 'text': 'Another thing'}]
>>>
>>> for dict_item in b_list:
... id = dict_item['post']
... for list_item in a_list:
... if list_item[0]['id'] == id:
... dict_item['comments'] = list_item
... break
...
>>> b_list
[{
'text': 'Something',
'post': '123',
'comments': [
{
'id': '123',
'user': 'Foo'
},
{
'id': '123',
'user': 'Jonny'
}
]
},
{
'post': '456',
'text': 'Another thing',
'comments': [
{
'id': '456',
'user': 'Bar'
},
{
'id': '456',
'user': 'Mary'
}
]
}
]