2014-06-10 80 views
0

我想要知道是否有一個命令,可以這樣做:添加更多的值以相同的密鑰

>>>A=dict() 
>>>A[1]=3 
>>>A 
    {1:3} 
>>>A[1].add(5)  #This is the command that I don't know if exists. 
>>>A 
    {1:(3,5)} 

我的意思是,另一個值添加到相同的密鑰,而不在quiting添加的舊值。 有可能做到這一點?

+1

將值存儲在列表中並且只是追加。 –

+0

您可能只是想使用defaultdict並將其默認爲列表並追加 – Hoopdady

回答

5

你可以把字典的值到lists

>>> A = dict() 
>>> A[1] = [3] 
>>> A 
{1: [3]} 
>>> A[1].append(5) # Add a new item to the list 
>>> A 
{1: [3, 5]} 
>>> 

您還可能有興趣在dict.setdefault,其具有類似於collections.defaultdict但無需功能導入:

>>> A = dict() 
>>> A.setdefault(1, []).append(3) 
>>> A 
{1: [3]} 
>>> A.setdefault(1, []).append(5) 
>>> A 
{1: [3, 5]} 
>>> 
+0

+1優秀的答案。無需導入任何其他庫。 – rdodev

1

使用defaultdict消除了初始插入的「特殊情況」。

from collections import defaultdict 

A = defaultdict(list) 

for num in (3,5): 
    A[1].append(num) 
2

一個list類型將創建情況下,你訪問不存在於字典到目前爲止的關鍵一個空列表的defaultdict。這通常會導致非常優雅的代碼。

>>> from collections import defaultdict 
>>> d = defaultdict(list) 
>>> d[1].append(3) 
>>> d[1].append(2) 
>>> d 
defaultdict(<type 'list'>, {1: [3, 2]}) 
0

與其他人一樣指出,存儲在列表中的值,但記得要檢查關鍵是在字典來判斷是否需要追加或該鍵創建一個新的列表...

A = dict() 
if key in A: A[key].append(value) 
else: A[key] = [value] 
相關問題