我有一个字典列表,其中的值存储为字符串。我想通过将值作为整数而不是字符串来对它们进行排序。 我有密码
XWordDict=[{"name":"ABC","pos":"1"},{"name":"GHI","pos":"10"},{"name":"DEF","pos":"2"}]
Xlistsorted=sorted(XWordDict,key=(operator.itemgetter("pos")))
命令如下
^{pr2}$不管我想怎样
[{'name': 'ABC', 'pos': '1'}, {'name': 'DEF', 'pos': '2'}, {'name': 'GHI', 'pos': '10'}]
如果我换成
Xlistsorted=sorted(XWordDict,key=int(operator.itemgetter("pos)))
它给出了一个错误
TypeError: int() argument must be a string or a number, not 'operator.itemgetter'
key
参数必须是函数。operator.itemgetter(i)
返回一个函数,但是为了在上面添加额外的处理,必须使用lambda。因为itemgetter
返回一个函数,所以可以调用结果在字典中使用它(在lambda中作为x
传递:也就是说,
^{pr2}$itemgetter
在这里可能是一个过于复杂的解决方案,您只需:一元关键字()返回一元关键字“排序后的参数”。因此,您需要一个函数来转换列表的每个元素(我们称之为d的字典),访问要排序的值,并将其从字符串转换为整数。在
您可以将其传递给sorted(),如下所示:
^{pr2}$此函数是一个冗长的示例,可以大幅缩短并转换为相当简洁的lambda:
因此使用:
相关问题 更多 >
编程相关推荐