簡體   English   中英

Python:按索引獲取列表,而不是默認字典中的鍵

[英]Python : Get list by index not key in defaultdict

我是python的新手,我陷入了數據類型問題。

我有一個腳本,看起來像這樣dd = defaultdict(list)for a in arr:dd [color] .append(i)

這會創建一個默認的dict,類似於

dd = [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

但是,我現在需要訪問第一個列表([2,4])。 我努力了

print(dd[0])

但是這個游戲我下面的輸出

[][][]

我知道defaultdict中有數據,因為我已經完整打印了它。 但是,除了通過字典索引訪問第一個項目外,我不知道如何訪問它。 但是,除了通過字典鍵訪問列表之外,我不知道如何獲取它。 但是,直到填充字典,我才知道鍵的名稱。

我曾考慮過要創建一個列表列表,而不是一個defaultdict,但是能夠通過鍵進行搜索對於代碼的另一部分將非常有用,因此,如果可能的話,我希望保持這種數據結構。

有沒有一種方法可以通過索引號來獲取列表,或者只能使用鍵來獲取列表?

您可以獲得鍵列表,按索引選擇鍵,然后訪問該鍵。

print(dd[dd.keys()[0]])

請注意,Python中的字典是無序集合。 這意味着鍵的順序是不確定的。 考慮以下示例:

from collections import defaultdict
d = defaultdict (int)
d['a'] = 1
d['b'] = 2
d['c'] = 3
d['d'] = 4
d['e'] = 5
print (d)

我的Python2提供:

defaultdict(<type 'int'>, {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4})

Python3的輸出方式有所不同:

defaultdict(<class 'int'>, {'c': 3, 'b': 2, 'a': 1, 'e': 5, 'd': 4})

因此,您將不得不使用其他一些方式來記住字典的填充順序。 可以按照需要的順序維護單獨的鍵(顏色)列表,或者使用OrderedDict

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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