我从外部文件导入嵌套字典并尝试访问最深层次的值;但是,当我尝试使用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
循环中出错的地方的任何建议吗?
答案 0 :(得分:1)
您正在迭代字典本身,这会产生该字典的键。在flagSet['emojiFlagSet']
词典中,这些键是字符串(例如'Andorra'
和'Afghanistan'
)。
你想要的是值,它也是字典的值。循环dict.values()
:
for country in flagSet['emojiFlagSet'].values():
print(country['unicode'])
请注意,从其他模块导入数据结构的事实与所有这些无关。