首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字典的嵌套列表上使用itemgetter的问题

在字典的嵌套列表上使用itemgetter的问题
EN

Stack Overflow用户
提问于 2020-07-08 22:08:36
回答 2查看 139关注 0票数 0

我正在尝试按特殊数字以升序排列此嵌套列表。我尝试过使用itemgetter,但是我收到了一个类型错误。这里不太确定解决方案是什么。谢谢!

代码语言:javascript
复制
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'))) 

错误:

代码语言:javascript
复制
TypeError: list indices must be integers or slices, not str
EN

回答 2

Stack Overflow用户

发布于 2020-07-08 22:12:01

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

之前的方法不起作用,因为您试图使用字符串为每个列表建立索引。然而,您真正需要的是字典中的"Special number“字段,它是每个列表的第二项。这将转换为[1]['Special number']

结果:

代码语言:javascript
复制
[[{'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}]]
票数 2
EN

Stack Overflow用户

发布于 2020-07-08 22:25:46

您可以组合两个operator.itemgetter函数。

代码语言:javascript
复制
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)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62796727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档