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