首页 > 解决方案 > 在嵌套的字典列表上使用 itemgetter 的问题

问题描述

我正在尝试按特殊数字升序排列这个嵌套列表。我曾尝试使用 itemgetter,但收到了打字错误。不太确定这里有什么解决方案。谢谢你!

from operator import itemgetter

nested = [
   [{'time': 5, 'ask price': 8}, {'ID': 'AA', 'Special number': 0.1}], 
   [{'time': 5, 'ask price': 8}, {'ID': 'BB', 'Special number': 0.15}],
   [{'time': 5, 'ask price': 8}, {'ID': 'CC', 'Special number': 0.05}]
]

print(nested.sort(key=itemgetter('Special number'))) 

错误:

TypeError: list indices must be integers or slices, not str

标签: pythonlistdictionarynested

解决方案


尝试这个:print(sorted(nested, key=lambda x: x[1]['Special number']))

您以前没有工作,因为您试图使用字符串索引每个列表。但是,您真正想要的是字典中的“特殊编号”字段,它是每个列表的第二项。这转化为[1]['Special number'].

结果:

[[{'ask price': 8, 'time': 5}, {'ID': 'CC', 'Special number': 0.05}],
 [{'ask price': 8, 'time': 5}, {'ID': 'AA', 'Special number': 0.1}],
 [{'ask price': 8, 'time': 5}, {'ID': 'BB', 'Special number': 0.15}]]

推荐阅读