Python 2,7字典建议

时间:2013-06-24 18:29:20

标签: python dictionary

我不经常在Python中使用字典对象。我一直在研究一个脚本,它要求我使用字典来存储动态创建的list'esque信息。如何将值附加到Python中字典中属于一个键的值列表中?这可能吗?我希望能够创建这种类型的信息,我可以在以后提取......

dict = {'PhysicalDrive0': '0', '1', '2', 'PhysicalDrive1': '0', '1'};
dict[PhysicalDrive0].append(3)
dict[PhysicalDrive1].append(2)
print dict[PhysicalDrive0]
<0, 1, 2, 3>
print dict[PhysicalDrive1]
<0, 1, 2>

谢谢!

4 个答案:

答案 0 :(得分:3)

使用列表作为值,列表将允许您追加新项目:

>>> dic = {'PhysicalDrive0': ['0', '1', '2'], 'PhysicalDrive1': ['0', '1']}
>>> dic['PhysicalDrive0'].append('3')
>>> dic['PhysicalDrive1'].append('2')
>>> dic
{'PhysicalDrive1': ['0', '1', '2'], 'PhysicalDrive0': ['0', '1', '2', '3']}

要将值附加到缺失密钥,您可以使用dict.setdefault,如果密钥已经存在,那么它会将值附加到已存在的列表,否则会创建一个带有空列表的密钥,然后附加它的价值。

演示:

#creates a new key PhysicalDrive3' and appends a value to it.
>>> dic.setdefault('PhysicalDrive3', []).append('3')
>>> dic
{'PhysicalDrive1': ['0', '1', '2'], 'PhysicalDrive0': ['0', '1', '2', '3'], 'PhysicalDrive3': ['3']}

>>> dic.setdefault('PhysicalDrive1', []).append('5')
>>> dic
{'PhysicalDrive1': ['0', '1', 2, '5'], 'PhysicalDrive0': ['0', '1', '2', 3], 'PhysicalDrive3': [3]}

答案 1 :(得分:3)

如果您不能简单地将值存储为列表文字,则应查看collections.defaultdict

from collections import defaultdict

dd = defaultdict(list)    
dd['Drive1'].append(3)
dd['Drive2'].append(6)
dd['Drive1'].append(2)

# defaultdict(<type 'list'>, {'Drive2': [6], 'Drive1': [3, 2]})

答案 2 :(得分:1)

dict = {'PhysicalDrive0': ['0', '1', '2'], 'PhysicalDrive1': ['0', '1']}

这应该如上所述。存储在字典中的值是一个列表 - 您可以正常处理。

这当然意味着您可以访问列表中的项目:

dict['PhysicalDrive0'][0]

答案 3 :(得分:1)

您的语法无效,键值的一半需要是单个项目,它可以是一个列表,但您可以说'PhysicalDrive0':['0','1','2']

然后,您可以通过说dict['PhysicalDrive0'].append('3')

附加到字典中的键值对