如何根据字典值对列表进行排序?

2024-03-29 04:45:17 发布

您现在位置:Python中文网/ 问答频道 /正文

给出一份清单和一份口述,格式如下:

l = ["2D", "5H", "8S", "JC", "3H", "4S", "8C", "AD"]

d = {"3":1,  "4":2,  "5":3, "6":4, "7":5,
     "8":6,  "9":7,  "0":8, "J":9, "Q":10,
     "K":11, "A":12, "2":13}

如何根据字典中的值对列表进行排序? 我尝试通过使用sortedlambda函数对其进行排序:

sorted(l, key=lambda x: d[x])

怎么了?或者有没有其他更好的方法来分类呢?你知道吗

谢谢你告诉我。你知道吗


Tags: 方法lambdakey函数列表字典排序格式
1条回答
网友
1楼 · 发布于 2024-03-29 04:45:17

很明显,列表中的元素都不是字典中的键。你知道吗

也许您只想使用list元素的第一个字母?如果是这样,您可以:

>>> li = ["2D","5H","8S", "JC", "3H", "4S", "8C", "AD"]
>>> di = {"3":1, "4":2, "5":3, "6":4, "7":5, "8":6, "9":7, "0":8, "J":9, "Q":10, "K":11, "A":12, "2":13}
>>> sorted(li, key=lambda k: di[k[0]])
['3H', '4S', '5H', '8S', '8C', 'JC', 'AD', '2D']

如果dict中可能不存在键,可以使用{}.get()提供默认权重:

>>> sorted(li, key=lambda k: di.get(k[0], 0))
['3H', '4S', '5H', '8S', '8C', 'JC', 'AD', '2D']

注意:不要给变量命名dictlist,否则当您尝试调用built-in functionslistdict时,有时可能会感到惊讶:

>>> list=[1,2,3]
>>> list('abc')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'list' object is not callable

相关问题 更多 >