python - 来自另一本词典的词典

标签 python dictionary dictionary-comprehension

我有一本包含 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/

相关文章:

对和值之间的 Java 映射

Python - 从字典中分配和更改列表

python - python 列表理解中缺失值的干净解决方案

python - 在类方法中使用属性名称安全吗?

python - 尝试检查满足这些条件的字符串

Python计算器编程错误

python - 如何避免两次写入 request.GET.get() 以打印它?

python - 选择大于某个值的 Python 字典的元素

python - 使用字典理解将函数应用于每个键的特定子键

python - VS Code - 在模块模式下为 console_script 运行调试配置