在字典中的字典中添加键:值对

时间:2015-11-20 06:58:15

标签: python dictionary

如何在Python中的字典中将key: value对添加到字典中? 我需要输入字典并按键的类型对结果进行排序:

new_d = {'int':{}, 'float':{}, 'str':{}}
temp = {}
for key in d:
    temp[key] = d[key]
    print temp
    if type(key) == str:
        new_d['str'] = temp
        temp.clear()
    elif type(key) == int:
        print 'int'
        temp.clear()
    elif type(key) == float:
        print 'float'
        temp.clear()

这就是我所拥有的,而且没有任何内容写入new_d词典。

输出应该如下所示

>>> new_d = type_subdicts({1: 'hi', 3.0: '5', 'hi': 5, 'hello': 10})
>>> new_d[int]
{1: 'hi'}
>>> new_d[float]
{3.0: '5'}
>>> new_d[str] == {'hi': 5, 'hello': 10}
True
"""

1 个答案:

答案 0 :(得分:4)

你不需要临时字典。您也可以直接将这些类型用作键。

d = {1:'a', 'c':[5], 1.1:3}
result = {int:{}, float:{}, str:{}}
for k in d:
    result[type(k)][k] = d[k]

结果:

>>> result
{<class 'float'>: {1.1: 3}, <class 'str'>: {'c': [5]}, <class 'int'>: {1: 'a'}}
>>> result[float]
{1.1: 3}

如果您愿意,可以使用collections.defaultdict自动添加必要类型的密钥(如果它们尚不存在),而不是对其进行硬编码:

import collections
d = {1:'a', 'c':[5], 1.1:3}
result = collections.defaultdict(dict)
for k in d:
    result[type(k)][k] = d[k]

结果:

>>> result
defaultdict(<class 'dict'>, {<class 'float'>: {1.1: 3}, <class 'str'>: {'c': [5]}, <class 'int'>: {1: 'a'}})
>>> result[float]
{1.1: 3}