我正在尝试根据嵌套字典的值创建一个有序列表。
这是我的源数据:
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
我认为问题在于我使用错误的语法从dict中获取requests
密钥...我尝试了不同的方法,但我总是得到类似的错误。我做错了什么?
答案 0 :(得分:2)
迭代字典会为您提供密钥。您可以改为使用items
:
sorted(data["countries"].items(), key=lambda kv: kv[1]["requests"])
答案 1 :(得分:0)
>>> l = data['countries']
>>> l2 = [{key:l[key]} for key in l.keys()]
>>> sorted(l2, key=lambda x:x[x.keys()[0]]['requests'],reverse=True)
[{'JP': {u'impressions': 0, u'requests': 1923}},
{'BE': {u'impressions': 0, u'requests': 807}},
{'BG': {u'impressions': 0, u'requests': 130}}
]