2017-08-09 282 views
1

嗨我有下面的字典,它有一個列表的值,列表內是一個字典。有沒有辦法使用鍵而不是列表索引來調用列表中的字典值?列表中的字典可能會有所不同,因此索引值可能並不總是提供正確的鍵值對。但是如果我能夠使用密鑰,我總能得到正確的值。Python字典裏面的字典列表

mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]} 
print(mylist['mydict'][0]['A']) 

電流輸出:

Letter A 

所需的查詢:

print(mylist['mydict']['A']) 
Letter A 
+0

爲什麼不只是使用字典的字典呢? – bphi

+1

如果不更改對象的結構,則無法更改所需查詢的結果。對於當前結構,查詢將始終引發錯誤。 –

+1

看起來你應該爲'mydicts = {k:dict(v)for k,v in mylist.items()}'然後你得到可以用作'mydicts ['mydict'] ['A']' –

回答

4

目前你有一本字典裏的列表裏3個字典。試試下面的不是:

mylist = {'mydict': {'A': 'Letter A', 'B': 'Letter C', 'C': 'Letter C'}} 
print(mylist['mydict']['A']) 
+0

我通過數據循環創建並使用.append({key:value})來創建帶有字典的列表。讓我看看我是否可以像這樣格式化它。這有助於感謝。 – MBasith

+0

在這種情況下,您可以初始化'mylist = {'mydict':{}}'並在'key'和'value'處使用'for'循環,並使用mylist ['mydict'] [key] = value' – Andras

+0

那就是訣竅。非常感謝你! – MBasith

0

如果原始數據被格式化,因爲這是唯一可行的:

mylist = {'mydict': {'A': 'Letter A','B': 'Letter C','C': 'Letter C'}} 

所以沒有嵌入列表 - 這似乎並不仍要添加有意義的結構?

1

在下面的代碼看看:

>>> mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]} 
>>> for dictionary in mylist['mydict']: 
... try: 
... dictionary['A'] 
... except KeyError: 
... pass 
... 
'Letter A' 

您遍歷列表內的字典,然後試着打電話給你A關鍵。你趕上KeyError,因爲在字典中可能不存在鍵。

1

請嘗試下面的代碼來生成新的字典。

mylist = {'mydict': [{'A': 'Letter A'}, {'B': 'Letter C'}, {'C': 'Letter C'}]} 
newDict={} 
for item in mylist['mydict']: 
    newDict.update(item) 
mylist['mydict']=newDict 
print(mylist['mydict']['A']) 
0

如何使用一臺發電機?

item = next(item['A'] for item in mylist['mydict'] if 'A' in item)