2017-04-05 106 views
0
data = { 
    "items" : [{"potion" : 1}, {"potion2" : 1}] 
} 

print(data["items"][0]["potion"]) 

所以,這裏是jiz。我想得到potion2而沒有提供像[0]這樣的號碼,但我不能,因爲一些變量在列表中有5個項目,而另一個可能有3個項目,因此提供一個號碼可能不會給我我需要的。有沒有辦法獲得potion2而不提供該號碼?根據變量中的元素鍵在列表中獲取字典的字典

+0

你真的需要一個單條目詞典列表嗎?這使事情變得更加困難。爲什麼不只有**「物品」:{「potion」:1,「potion2」:1} **,以便您可以通過名稱找回它們? – Prune

回答

0

我假設你不想提供索引,因爲硬編碼在任何情況下都不起作用。

您可以取出列表中具有該鍵的任何項目。

建立具有該鍵的任何項目的列表。它通常可能只有一個,但容器本身並不強制只有一個條目可以擁有該密鑰。

之後,您可以迭代列表或檢查返回的值是否爲空,並只取第一個元素。

>>> data = {'items': [{'potion': 1}, {'potion2': 1}]} 
>>> e = filter(lambda i: 'potion' in i, data['items']) 
>>> for i in e: 
...  print(i['potion']) 
... 
1 

或只拉出第一個元素。我意識到你說沒有索引,但是這個索引被應用到過濾列表中,並且我們先檢查它不是空的,所以這是一個有效的事情。

>>> if e: 
...  print(e[0]['potion']) 
... 
1 
相關問題