在给定的字典中,我们使用label、parent_label和url作为关键字。相同的parent_label应该包含[label,url]。如果parent_label重复,则应附加该特定parent_label的[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']]}伙计们,请帮帮我。谢谢
发布于 2018-08-08 17:55:18
这似乎是defaultdict的工作:它的行为类似于一个字典,但如果您访问一个从未设置过的元素,它不会引发错误,而是在第一次访问时将其设置为所选默认对象(这里是list)的实例。
在您的案例中,问题在于当您想要添加一个元素时,您会覆盖与最终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']]})https://stackoverflow.com/questions/51743607
复制相似问题