Python 从字典列表中生成一个dict,这样字典中的相同值将成为键,这些值是剩下的项
在给定的字典中,我们有Python 从字典列表中生成一个dict,这样字典中的相同值将成为键,这些值是剩下的项,python,dictionary,Python,Dictionary,在给定的字典中,我们有label,parent\u label和url作为键。相同的父标签应包含[标签,url]。如果父标签重复,则应附加该特定父标签的[label,url] 输入是 top = [{u'label': u'Square HSS Tool Bits', u'parent_label': u'Lathe Tools', u'url': u'/hss-tools/hss-square-tool-bits'}, {u'label': u'
label
,parent\u label
和url
作为键。相同的父标签
应包含[标签,url]
。如果父标签
重复,则应附加该特定父标签
的[label,url]
输入是
top = [{u'label': u'Square HSS Tool Bits',
u'parent_label': u'Lathe Tools',
u'url': u'/hss-tools/hss-square-tool-bits'},
{u'label': u'HSS Tapped Punches',
u'parent_label': u'Press Tools',
u'url': u'/hss-tapped-punches'},
{u'label': u'Carbide Radius End Mills',
u'parent_label': u'Milling Tools',
u'url': u'/carbide-radius-end-mills'},
{u'label': u'HSS Mini Straight Punches',
u'parent_label': u'Press Tools',
u'url': u'/hss-mini-straight-punches'},
{u'label': u'Carbide Square Tool Bits',
u'parent_label': u'Lathe Tools',
u'url': u'/carbide-square-tool-bits'},
{u'label': u'HSS Center Drill Bits',
u'parent_label': u'Drilling Tools',
u'url': u'/hss-tools/hss-center-drill'},
{u'label': u'Rectangular HSS Tool Bits',
u'parent_label': u'Lathe Tools',
u'url': u'/rectangular-hss-tool-bits'},
{u'label': u'News', u'parent_label': u'About Us', u'url':
u'/news'}]
输出应该如下所示:
{'Lathe Tools' : [[u'Square HSS Tool Bits',u'/hss-tools/hss-square-
tool-bits'],[u'Rectangular HSS Tool Bits',u'/rectangular-hss-tool-bits']],
'Press Tools':[['HSS Tapped Punches',u'/hss-tapped-punches'],[u'HSS Mini Straight Punches',u'/hss-mini-straight-punches'],....]
我试过:
for i in top:
if i['parent_label'] in k.keys():
k[i['parent_label']] = [[i['label'],i['url']]]
我的o/p是:
{u'About Us': [[u'News', u'/news']],
u'Drilling Tools': [[u'HSS Center Drill Bits',
u'/hss-tools/hss-center-drill']],
u'Lathe Tools': [[u'Rectangular HSS Tool Bits',
u'/rectangular-hss-tool-bits']],
u'Milling Tools': [[u'Carbide Radius End Mills',
u'/carbide-radius-end-mills']],
u'Press Tools': [[u'HSS Mini Straight Punches',
u'/hss-mini-straight-punches']]}
请帮帮我,伙计们。
谢谢看来这是一份属于
defaultdict
的工作:
它的作用类似于字典,但如果您访问从未设置的元素,它不会引发错误,而是在第一次访问时将其设置为所选默认对象的实例(这里是列表
)
本例中的问题是,当您要添加元素时,您会覆盖与最终dict
中的键相关联的内容。
您可能正在寻找类似的内容:
from collections import defaultdict
result = defaultdict(list)
for d in top:
result[d[u'parent_label']].append([d[u'label'], d[u'url']])
print(result)
结果:
defaultdict(list,
{'About Us': [['News', '/news']],
'Drilling Tools': [['HSS Center Drill Bits',
'/hss-tools/hss-center-drill']],
'Lathe Tools': [['Square HSS Tool Bits',
'/hss-tools/hss-square-tool-bits'],
['Carbide Square Tool Bits', '/carbide-square-tool-bits'],
['Rectangular HSS Tool Bits', '/rectangular-hss-tool-bits']],
'Milling Tools': [['Carbide Radius End Mills',
'/carbide-radius-end-mills']],
'Press Tools': [['HSS Tapped Punches', '/hss-tapped-punches'],
['HSS Mini Straight Punches', '/hss-mini-straight-punches']]})