我有两个名为 a_list
和 b_list
的列表:
a_list = [{'category_id': 1, 'category_name': u'AAA'}, \
{ 'category_id': 2, 'category_name': u'BBB'}]
b_list = [{'project_count': u'20', 'category_name': u'AAA'}, \
{'project_count': u'31', 'category_name': u'BBB'}]
我想制作一个新列表,c_list
,它结合了 a_list
和 b_list
以及 category_name
。结果列表应如下所示:
c_list = [{'category_id': 1,'project_count': u'20', 'category_name': u'AAA'},\
{'category_id': 2,'project_count': u'31', 'category_name': u'BBB'}]
目标是能够访问同一“category_name”的 page_max
和“category_id”。
for entry in c_list:
page_num =1
category_name = entry['category_name']
category_id = entry['category_id']
url = 'https://www.test.com?category_id=%(category_id)s&page=%(page)s' % {'category_id': category_id, 'page': str(page_num)}
print url
# AAA project_count is 20
# BBB project_count is 31
page_max = int(entry['project_count'])
for i in range(page_max - 1):
page_num += 1
url = 'https://www.test.com?category_id=%(category_id)s&page=%(page)s' % {'category_id': category_id, 'page': str(page_num)}
print url
如何根据键 'category_name'
的值合并列表中的字典?
最佳答案
您可以创建一个 {category_name: dict} 的中间字典,然后使用更新:
temp = {a['category_name']: dict(a) for a in a_list}
for b in b_list:
temp[b['category_name']].update(b)
c_list = list(temp.values()) # list() unnecessary in py2.X
但这并不能保证保持列表的顺序。如果顺序很重要:
c_list = [temp[a['category_name']] for a in a_list]
关于python - 合并两个在字典中具有相同项目的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32687664/