1

ネストされた辞書の値に基づいて順序付きリストを作成しようとしています。

ここに私のソースデータがあります:

data = {
    'countries': {
        'BE': {
            u'impressions': 0,
            u'requests': 807
        },
        'BG': {
            u'impressions': 0,
            u'requests': 130
        },
        'JP': {
            u'impressions': 0,
            u'requests': 1923
        }
    },
    'totals': {}
}

そして、これが私が期待する結果です:

list = [{'JP': { u'impressions': 0, u'requests': 1923 }}, {'BE': { u'impressions': 0, u'requests': 807 }}]

そして最後に、フィルタリングを行うために私が書いたコード:

list = sorted(data["countries"], key=itemgetter('requests'))[:2]

しかし、私はいつもこの種のエラーを受け取ります:

TypeError: string indices must be integers

問題は、辞書からキーを取得するために間違った構文を使用していることだと思いますrequests...さまざまな方法を試しましたが、常に同様のエラーが発生します。私は何を間違っていますか?

4

2 に答える 2

2

辞書を反復すると、そのキーが得られます。代わりに使用できますitems

sorted(data["countries"].items(), key=lambda kv: kv[1]["requests"])
于 2013-10-28T01:06:30.077 に答える