我有一个名为dictdict的词典字典,它看起来像:
dictdict = { 'key1': {'subkey1': 4, 'subkey2': 7},
'key2': {'subkey1': 6, 'subkey2': 8} }
......等等。 dictdict
有几十个键,每个键有几十个子键,每个子键对应一个整数值。
我想在每个单独的值上附加一个列表,保留已存在的值作为新值列表中的第一项。因此,期望的结果将具有与之前相同的字典结构字典,除了代替对应于单个整数的子键,它们将对应于包含整数和字符串的列表(因此包含我的原始值作为第一个项目的列表通过各种整数和字符串)。
我希望得到一些看起来像的东西:
dictdict = { 'key1': {'subkey1': [4, 'apple', 37],
'subkey2': [7, 'orange', 19]},
'key2': {'subkey1': [6, 'kiwi', 76],
'subkey2': [8, 'banana', 29]} }
当我试试这个......
#convert each nested value into a one item list
for key in dictdict:
for subkey in dictdict[key]:
dictdict[key][subkey] = [dictdict[key][subkey]]
#now that our values are lists, append some items to the list
dictdict["key1"]["subkey1"].append('a1', a2)
...它几乎可以工作,因为我可以为每个值附加一个列表(万岁!)但是每个列表中的第一项(我的原始值)现在是它自己的一个项目列表(哎呀!)。 / p>
所以我最终得到了
dictdict[key1][subkey1]
对应于此
[[4], 'a1', a2]
但我希望它与此对应
[4, 'a1', a2]
此外,它可能不会说出来,但我是新手。
答案 0 :(得分:4)
>>> dictdict = { 'key1': {'subkey1': 4, 'subkey2': 7}, 'key2': {'subkey1': 6, 'subkey2': 8} }
>>> dictdict["key1"]["subkey1"]
4
>>> for v1 in dictdict.values():
... v1.update((k,[v]) for k,v in v1.iteritems())
...
>>> dictdict["key1"]["subkey1"] += ['a1', 'a2']
>>> dictdict["key1"]["subkey1"]
[4, 'a1', 'a2']
>>>
答案 1 :(得分:0)
你可以使用dict理解,如下:
dictdict = {k:{kk:[vv] for (kk, vv) in v.iteritems()} for (k, v) in dictdict.iteritems()}
例如,如果这是你最初的词典:
>>> dictdict
{'a': {'mm': 4}, 'b': {'qq': 6}}
然后结果将是:
>>> dictdict = {k:{kk:[vv] for (kk, vv) in v.iteritems()} for (k, v) in dictdict.iteritems()}
>>> dictdict
{'a': {'mm': [4]}, 'b': {'qq': [6]}}
这使您可以将项目附加到嵌套列表。如果要附加其他列表,则可以使用+=
或extend()
执行此操作;如果要一次添加单个元素,则可以使用append()
。