我有一個n元組的字典。我想從這個包含特定鍵值對的元組中檢索一個字典。使用Python list-comprehension從嵌套元組字典結構中檢索數據
我試圖儘可能優雅地做到這一點,我認爲列表理解是要走的路 - 但這不是一個基本的列表理解,我有點失落。
這說明了什麼,我試圖做的想法,但它並沒有當然的工作:
# 'data' is my n-tuple
# 'myKey' is the key I want
# 'myValue is the value I want
result = [data[x] for dictionary in data if (data[x][myKey]) == myValue)][0]
# which gives this error:
NameError: global name 'x' is not defined
之前,我是想這樣的事情(錯誤有意義,我的理解):
result = [data[x] for x in data if (data[x][myKey] == myValue)][0]
# which gives this error:
TypeError: tuple indices must be integers, not dict
這是使用嵌套解析的時候嗎?那看起來會是什麼樣子,在這一點上用循環和條件寫出來會更簡單嗎?
此外,側面的問題 - 是否有一種更pythonic的方式來獲得列表中的第一個(或唯一的)元素,除了最後只是抨擊[0]?
如果以這種方式定義元組數據,我將如何解決這個問題data =({「one」:'I','three':'III','five':'V'},{「兩個「:'II','four':'IV'})'和myKey ='one',myValue ='I' – kvivek
@kvivek,它起作用,因爲OP詢問:'我想從字典中檢索字典這個包含特定鍵值對的元組' – alecxe
我不明白爲什麼@ kvivek的情況是一個問題;當我測試它時,你的方法就能處理它。也許他誤解了我的問題? 這個答案符合我的需求,但它需要讀者理解發生器 - 我沒有在我的代碼中使用任何其他地方。爲了保持一致,我將與jabaldonedo的答案一致。 –