簡體   English   中英

如何索引 python 中的字典列表?

[英]How to index a list of dictionaries in python?

如果我在 python 腳本中有一個字典列表,我打算稍后在JSON文件中dump為對象數組,我如何在列表中索引特定字典的鍵?

例子:

dict_list = [{"first_dict": "some_value"}, {"second_dict":"some_value"}, {"third_dict": "[element1,element2,element3]"}]

我直觀的解決方案是dict_list[-1][0] (例如,訪問列表中最后一個字典的第一個鍵)。 然而,這給了我以下錯誤:

IndexError: list index out of range

輸入到字典中的鍵將選擇 dict = {0:some_value} 格式的某個值

查找特定值:

list_dictionary = [{"dict1":'value1'},{"dict2","value2"}]
value1 = list_dictionary[0]["dict1"]

'key' 是你必須用來從字典中查找值的東西

例子:

dictionary = {0:value}
dictionary[0]

在這種情況下它會起作用

但是要選擇我們要做的元素

values = []

for dictionary in dict_list:
   for element in dictionary:
      values.append(dictionary[element])

Output:

['some_value', 'some_value', ['element1', 'element2', 'element3']]
dict_list = [{"first_dict": "some_value"}, {"second_dict":"some_value"}, {"third_dict": ['element1','element2','element3']}]

如果您的 dict 看起來像這樣,您也可以這樣做

dict_list[-1]["third_dict"]

您不能使用 int 訪問“第一個鍵”,因為您有一個 dict 您可以使用.keys()獲取第一個鍵,然后

dict_list[-1].keys()[0]

如果您有以下字典列表:

dict_list = [{"key1":"val1", "key2":"val2"}, {"key10":"val10"}]

然后要訪問最后一個字典,您確實會使用dict_list[-1]但這會返回一個字典,其中使用其鍵而不是數字進行索引: dict_list[0]["key1"]

要僅使用數字,您需要先獲取鍵列表: list(dict_list[-1]) 此列表list(dict_list[-1])[0]的第一個元素將是第一個鍵"key10"

然后,您可以使用索引來訪問最后一個字典的第一個鍵:

dict_list[-1][ list(dict_list[-1])[0] ]

但是,您會將字典用作列表,因此列表列表可能比字典列表更適合。

通過使用dict_list[-1][0] ,您正在嘗試使用您沒有的列表訪問列表。 您在列表中有一個帶有 dict 鍵的列表。

以你的例子dict_list[-1][0]

  • 當您提到dict_list時,您已經“在列表中”。
  • 第一個索引 [-1] 是指列表的最后一項。
  • 只有在前一個索引中提到的項目是一個列表時,第二個索引才“可用”。 因此錯誤。

使用:

dict_list=[{"first_dict": "some_value"}, {"second_dict":"some_value"},{"third_dict": [0,1,2]}]

要訪問您需要的third_dict

for value in list(dict_list[-1].values())[0]:
    print(value)

Output:

0
1
2

如果您知道字典鍵的順序並且您使用的是最新的 python 版本之一(鍵保持相同的順序),那么:


dict_list = [
    {"first_dict": "some_value"}
    , {"second_dict":"some_value"}
    , {"third_dict": ["element1", "element2", "element3"]}
]

first_key = next(iter(dict_list[-1].keys()))

### OR: value

first_value = next(iter(dict_list[-1].values()))

### OR: both key and value

first_key, first_value = next(iter(dict_list[-1].items()))


print(first_key)
print(first_key, first_value)
print(first_value)

暫無
暫無

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

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