我正在尝试按特殊数字以升序排列此嵌套列表。我尝试过使用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发布于 2020-07-08 22:12:01
试试这个:print(sorted(nested, key=lambda x: x[1]['Special number']))
之前的方法不起作用,因为您试图使用字符串为每个列表建立索引。然而,您真正需要的是字典中的"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}]]发布于 2020-07-08 22:25:46
您可以组合两个operator.itemgetter函数。
import operator
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}]
]
one = operator.itemgetter(1)
special = operator.itemgetter('Special number')
nested.sort(key=lambda x: special(one(x)))
print(nested)https://stackoverflow.com/questions/62796727
复制相似问题