我有一本包含 ID 和计数的字典:
items_count = {
'1111:271': 111,
'1111:190': 3,
'1231:106': 13,
'1211:104': 111,
'1111:201': 9
}
键是“category”:“id”。我想分离类别并将其放入另一个字典中,例如:
items_count2 = {
'1111': {'271': 111, '190': 3, '201': 0},
'1231': {'106': 13},
'1211': {'104': 111}
}
但是当我这样做时
items_count2 = {k.split(':')[0]: {k.split(':')[1]: v} for k, v in items_count}
我收到错误 “ValueError:需要解包的值太多(预计为 2 个)”
请帮助理解,我做错了什么?
最佳答案
所以首先你的建议应该是:
items_count2 = {k.split(':')[0]: {k.split(':')[1]: v} for k, v in items_count.items()}
但这也不起作用,因为每个子词典有多个 k、v。
下面是一种不使用字典理解的方法:
dct = {
'1111:271': 111,
'1111:190': 3,
'1231:106': 13,
'1211:104': 111,
'1111:201': 9
}
# Initialize your new dict
new_dct = {k.split(':')[0]: {} for k in dct} # Or k in dct.keys()
# Loop through old dict
for k, v in dct.items():
# Set value to top > sub key in new dict
new_dct[k.split(':')[0]][k.split(':')[1]] = v
print(new_dct)
输出:
{'1111': {'271': 111, '190': 3, '201': 9}, '1231': {'106': 13}, '1211': {'104': 111}}
关于python - 来自另一本词典的词典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71049804/