1

我有一本名为 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) 

...它几乎可以工作,因为我可以为每个值附加一个列表(万岁!)但是每个列表中的第一项(我的原始值)现在是它自己的一个项目列表(哎呀!)。

所以我最终得到

dictdict[key1][subkey1]

对应于此

[[4], 'a1', a2]

但我希望它与此相对应

[4, 'a1', a2]

此外,它可能没有说,但我是一个新手。

4

2 回答 2

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']
>>> 
于 2013-02-14T03:48:05.183 回答
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()

于 2013-02-14T03:39:52.983 回答