我讀過OrderedDict可以用來保持字典順序的信息,但它似乎要求您輸入信息,同時實例化字典本身。如何確保更新()添加到字典結尾
但是,我需要能夠在for循環中多次使用update(),並確保每個條目都被添加到字典的尾端。有沒有辦法做到這一點?
這裏是一個可視化我在說什麼的約
for e in entryList:
myDict.update({e[2]: e[3]})
這將把所有的新信息,但不把它放在秩序。
我讀過OrderedDict可以用來保持字典順序的信息,但它似乎要求您輸入信息,同時實例化字典本身。如何確保更新()添加到字典結尾
但是,我需要能夠在for循環中多次使用update(),並確保每個條目都被添加到字典的尾端。有沒有辦法做到這一點?
這裏是一個可視化我在說什麼的約
for e in entryList:
myDict.update({e[2]: e[3]})
這將把所有的新信息,但不把它放在秩序。
根據文檔(https://docs.python.org/2/library/collections.html#collections.OrderedDict),您必須在添加條目之前刪除條目。
您可以在子類中包裝這個爲了方便..:
class MyOrderedDict(OrderedDict):
def update(self, other):
for k, v in other.items():
if k in self:
del self[k]
self[k] = v
我覺得奇怪,使用更新你這樣做雖然方式:
myDict.update({e[2]: e[3]})
,因爲它會更清楚寫:
myDict[e[2]] = e[3]
爲了使這項工作,你還需要覆蓋__setitem__
class MyOrderedDict(OrderedDict):
def __setitem__(self, key, val):
if key in self:
del self[key]
super(self, MyOrderedDict).__setitem__(key, val)
def update(self, other):
for k, v in other.items():
self[k] = v
@Bob,請參考這裏的文檔。 https://docs.python.org/3.5/library/collections.html?highlight=ordereddict#collections.OrderedDict
它說:
的OrderedDict構造和update()方法都接受關鍵字 爭論,但他們的訂單丟失,因爲Python的函數調用 語義關鍵字參數使用普通無序 詞典通過。
然而,有3.2增加了一個解決辦法:(來自同一頁)
move_to_end(鍵,最後= TRUE)將現有的密鑰到 有序字典的任一端。如果最後一個爲真 (默認),則該項目移動到右端,如果最後一個爲假,則將項目移動到開頭。如果 鍵不存在,則引發KeyError。
我希望能回答這個問題。
'append()'for OrderedDict?你確定有嗎? –
因此,我建議再次從這篇文章的建議:http://stackoverflow.com/questions/13239279/is-it-possible-to-add-key-value-pair-at-the-end-of-該詞典功能於蟒蛇 – Chichi