gpt4 book ai didi

python - 如何使用 Python 按字母数字顺序按值对字典进行排序?

转载 作者:太空宇宙 更新时间:2023-11-04 09:22:56 25 4
gpt4 key购买 nike

我在用字母数字值对字典进行排序时遇到问题。每个值前面至少有一个字母(有时是两个),后面跟着一些数字。示例:

shoppingList = {'milk': 'W30', 'eggs': 'W29', 'tuna': 'W3', 'gum': 'CL24', 'beans': 'W6'}

当我排序时:

sorted_dict = sorted(shoppingList.items(), key = operator.itemgetter(1))

for i in sorted_dict:
print(i)

输出:

('gum', 'CL24')
('eggs', 'W29')
('tuna', 'W3')
('milk', 'W30')
('beans', 'W6')

所以排序似乎只使用它遇到的第一个数字。有没有办法让输出为

('gum', 'CL24')
('tuna', 'W3')
('beans', 'W6')
('eggs', 'W29')
('milk', 'W30')

提前谢谢你。

最佳答案

它排序的是字符串,不是数字,需要解析整数。

单行方法会很难看,所以我很想将下面给定的键转换成一个可以处理列表拆分的单独函数

sorted(
shoppingList.items(),
key=lambda k: (
''.join(x for x in k[1] if not x.isdigit()),
int(''.join(x for x in k[1] if x.isdigit()))
)
)
 [('gum', 'CL24'), ('tuna', 'W3'), ('beans', 'W6'), ('eggs', 'W29'), ('milk', 'W30')]

关于python - 如何使用 Python 按字母数字顺序按值对字典进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59185479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com