在Python 3.5中访问嵌套字典

时间:2017-09-28 06:56:15

标签: python dictionary nested

我从外部文件导入嵌套字典并尝试访问最深层次的值;但是,当我尝试使用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'])

我相当肯定我之前已经在其他一些词典上做了类似的事情(并且没有任何问题),我想知道是否有明显的事情我&# 39;此时我失踪了。

奇怪的是,如果我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循环中出错的地方的任何建议吗?

1 个答案:

答案 0 :(得分:1)

您正在迭代字典本身,这会产生该字典的。在flagSet['emojiFlagSet']词典中,这些键是字符串(例如'Andorra''Afghanistan')。

你想要的是值,它也是字典的值。循环dict.values()

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

请注意,从其他模块导入数据结构的事实与所有这些无关。