簡體   English   中英

在Python中將值附加到字典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM