簡體   English   中英

在Python 3.5中訪問嵌套字典

[英]Accessing nested dictionary in Python 3.5

我正在從外部文件導入嵌套字典,並嘗試訪問最深層的值; 但是,當我嘗試使用for循環時,出現以下錯誤:

print(country['unicode'])
TypeError: string indices must be integers

我正在導入的字典(從emojiFlags.py文件中)看起來像這樣:

flagSet = {'emojiFlagSet': {'Andorra': {'emoji': '🇦🇩', 'unicode': 
'U+1F1E6 U+1F1E9'}, 'Afghanistan': {'emoji': '🇦🇫', 'unicode': 'U+1F1E6 
U+1F1EB'}, ... }}

等等等

以下是我正在使用的代碼片段:

from emojiFlags import flagSet

# Get country emoji data
for country in flagSet['emojiFlagSet']:
    print(country['unicode'])

我可以肯定地說,我之前在許多其他詞典上都做了這樣的事情(並且沒有問題),我想知道此時我是否還缺少某些明顯的東西。

奇怪的是,如果我print(flagSet) ,我的返回值是emojiFlagSet (鍵),而不是它的值(字典); 但是,如果我print(flagSet['emojiFlagSet'])則返回的結果是應嵌套的整個嵌套字典值。 如果我改為嘗試

for country in flagSet['emojiFlagSet']:
    print(country)

我得到了所有的國家名稱,但是,就像使用print(flagSet)語句一樣,我只得到鍵,而不是它們的嵌套字典值。

我的最終目標是簡單地返回每個國家/地區詞典中'unicode'鍵的值。 所以,我希望看到

U+1F1E6 U+1F1E9

以第一個國家為例。

如果我做的最奇怪

print(flagSet['emojiFlagSet']['Andorra']['unicode'])

作為一個簡單的測試,我得到的正是我想要的。 有什么建議可以解決我在for循環中出錯的地方嗎?

您正在遍歷字典本身,這將產生該字典的 在您的flagSet['emojiFlagSet']字典中,這些鍵是字符串(例如'Andorra''Afghanistan' )。

您需要這些值,因為這些值也是字典。 遍歷dict.values()

for country in flagSet['emojiFlagSet'].values():
    print(country['unicode'])

請注意,您從另一個模塊導入數據結構的事實與所有這些都不相關。

暫無
暫無

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

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