[英]Appending values to a dictionary in Python
我正在尋找使用字典處理某些數據輸出的最聰明的方法。 我有一個唯一的鍵,它將與它關聯其他值,例如,我們有1:[2,3,4,7],2:[8,9,5]。 我想做的是能夠附加值,以便對於第一個鍵,我可以添加數字13並得到以下內容:
1:[2, 3, 4, 7, 13], 2:[8, 9, 5]
追加似乎不是最聰明的方法。 我在用:
dict[master = dict[master].append(id)
但我得到以下信息:
AttributeError:“ int”對象沒有屬性“ append”
現在,我可以簡單地使用它們的鍵的先前值,並簡單地執行以下操作(id = 17):
newvalue =值,id
但這會導致多余的括號,例如
1:[[2, 3, 4, 7, 13], 17]
確保我只將數字放在一組括號中的最聰明方法是
1:[2, 3, 4, 7, 13, 17]
我可以使用一些剝離功能-但是有沒有很好的簡便方法和簡單的方法來執行此操作。 我可能在這里忽略了一些簡單的事情。 提前致謝。
使用collections.defaultdict
(並且,wottthehell,將每個條目設置為collections.deque
只是為了好玩;當然,您也可以使用簡單的舊list
)。
from collections import defaultdict, deque
d = defaultdict(deque) # or ...(list)
d[1].append(2)
d[1].extend([3, 4, 7, 13])
這里的基本思想是,字典值始終為 deque
s,並且始終將其附加到它們,因此您不必擔心值是否為int
。 如果您使用字典中不存在的鍵,則defaultdict
將自動為您創建一個新的deque
,因此您不必檢查該鍵是否也已存在於字典中。
如果您已經有一個帶有單個int
值的常規字典-假設它是您調用的某個函數的返回值-您可以使用該字典來構建新字典,然后再將其用於任何用途。
d = defaultdict(deque)
for key, value in old_d.iteritems():
d[key].append(value)
列表是可變的。 只需將其更改就位。
dict[master].append(id)
(1)創建一個類來對此進行總結(甚至更好,請使用defaultdict(deque)
代替dict
,如@kindall所建議;您只需要一個新類,如果需要的更多)
(2)使用deque
作為dict中每個條目(甚至是空值或單值條目)的值,並附加到該雙端隊列。 deque
旨在在兩端均具有固定時間附加; list
實際上是一個向量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.