首页 > 解决方案 > 如何重新配置​​此字典以更改其键

问题描述

假设我有这本字典:

>>> dic = {('a', 'l'):3, ('a', 'p'):2, ('b', 'l'):4, ('b', 'p'):1}

我怎样才能编辑它,所以我可以像这样拥有它:

>>> dic_new = {'a':{'l':3, 'p':2}, 'b':{'l':4, 'p':1}}

每当我更改密钥时,都会出现错误。我很困惑。

标签: pythonpython-3.xdictionary

解决方案


在每种情况下,您都希望设置d2[k1][k2]=v您拥有的任何位置d1[k1,k2]=v。最简单的方法是从 defaultdict 开始。

>>> from collections import defaultdict
>>> d1 = {('a', 'l'):3, ('a', 'p'):2, ('b', 'l'):4, ('b', 'p'):1}
>>> d2 = defaultdict(dict)
>>> for k1, k2 in d1:
...    d2[k1][k2] = d[k1,k2]
...
>>> d2
defaultdict(<class 'dict'>, {'a': {'l': 3, 'p': 2}, 'b': {'l': 4, 'p': 1}})
>>> dict(d2)
{'a': {'l': 3, 'p': 2}, 'b': {'l': 4, 'p': 1}}

如果您不想使用 a defaultdict,请使用该setdefault方法。

d2 = {}
for k1, k2 in d1:
    d2.setdefault(k1, {})[k2] = d1[k1,k2]

推荐阅读