外部ファイルからネストされた辞書をインポートしていて、最も深いレベルの値にアクセスしようとしています。私は次のエラーを取得するfor
ループを使用しようとすると、しかし、:Python 3.5でネストされた辞書にアクセスする
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'])
は、私はかなりCよ私はこれまで何度も他の辞書でこれをやったことがあります(そして何の問題もありませんでした)、私はこの時点で何かが分からないと思っています。
奇妙なことに、私が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
ループでどこが間違っているかについての提案はありますか?
'.values()'を繰り返しますか? 'print(flagSet ['emojiFlagSet'] [country] ['unicode'])'? – jonrsharpe
@jonrsharpeさんがあなたのコメントを見ました...フィードバックに感謝します!これは(あなたの2番目の提案)は私が以前に使用したことだとちょうどそれを忘れているようだ –