python - 在嵌套的字典列表上使用 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
解决方案
尝试这个: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}]]
推荐阅读
- swift - 添加到场景时,Swift SpriteKit SKEmitter 节点颜色不正确
- google-cloud-shell - 带有 ?authuser=1 参数的谷歌云外壳不断加载
- list - 给定位置可以采用的元素,生成所有可能列表的列表的函数
- flask - flask sqlalchemy filter_by 给出运行时错误
- apache-kafka - Spring Kafka Stream - 未确认的消息,没有错误
- java - 在 GET 请求正文中将数据传输到 Java 应用程序(servlet)
- python - 我正在尝试在同一图中绘制不同温度的黑体?
- javascript - 模板未显示在我的 Laravel 6.6 项目中使用 Vue.js
- c# - Java.Lang.IllegalArgumentException:无效位图格式在启动时间歇性
- vue.js - 将 Flask 与 Nuxtjs 结合用于 SSR