【发布时间】:2019-11-23 13:57:18
【问题描述】:
我正在使用 for 循环从表中创建字典。目标是使用 for 循环创建具有嵌套键值对的字典。
表格为文本格式,第一行是表头,如下所示:
AAA|BBB|CCC
zzz|100|xy
zzz|50|xy
xxx|200|xy
xxx|100|xy
zzz|300|xz
zzz|400|xz
xxx|200|xz
xxx|700|xz
要按 AAA 获取总数,(在 AAA:CCC 键值对中),代码成功:
dict = {}
with open('data.txt') as table:
table.readline()
for line in table:
(AAA, BBB, CCC) = line.split("|")
dict[AAA] = dict[AAA] + int(BBB) if AAA in dict else int(BBB)
输出如预期:
{'zzz': 850, 'xxx': 1200}
下一步(也是我卡住的地方)是如何执行迭代以创建内部键,格式为
{'zzz':{xy:150, xz:700}, 'xxx':{xy:300, xz:900}}
这是我目前所拥有的,但不明白如何将 insideKey 插入到这个字典中:
dict = {}
new_dict = {}
with open('data.txt') as table:
table.readline()
for line in table:
(AAA, BBB, CCC) = line.split("|")
dict[AAA] = dict[AAA] + (new_dict[CCC] + int(BBB)) if CCC in new_dict else int(BBB)
我了解我无法使用 + 添加 insideKey,但找不到执行此操作的方法。
预期输出:
{'zzz':{xy:150, xz:700}, 'xxx':{xy:300, xz:900}}
【问题讨论】:
-
你想对重复值做什么:
xxx|200|xy xxx|100|xy{xxx:{ xy:?}}应该是什么? -
Mark Meyer:看起来 N N 想对它们求和。
-
马克,应该加在一起,{xxx:{xy:300}}。把它想象成 xxx 是一个苹果,200 是数量,xy 是 Kevin,购买那个数量的人。在下一个实例中,xxx - 苹果,数量 100,也由 Kevin (xy) 购买。 xz 将是另一个人,Mike 说。因此,我们的字典键和值将是
{apple:{Kevin:300, Mike:900}}。
标签: python loops dictionary nested key