3

我正在尝试制作一个带有卡片等级的排序系统,它们的值是从单独的字典中获得的。在一个简单的 52 张牌中,我们有 2 个 A 等级,在这种情况下,我想要一个等级系统,其中 0 是 10,J 是 11,Q 是 12,K 是 13,A 是 14,2 是 15,其中 2 是最大的价值排名。问题是,如果有一个列表,我想根据编号系统按 ASCENDING顺序对排名卡进行排序,我该怎么做?

例如,这是一个列表,[3,5,9,7,J,K,2,0]我想将列表排序为[3,5,7,9,0,J,K,2]。我还为编号系统制作了一本字典{'A': 14, 'K': 13, 'J': 11, 'Q': 12, '0': 10, '2': 15}

谢谢

4

2 回答 2

1

这个答案有效:

    sorted(list_for_sorting, key=dictionary_you_wrote.__getitem__)

这也是:

    sorted_list = sorted(unsorted_list, key = lambda k: your_dictionary[k])

sorted 函数使用第一个参数(要排序的对象)中的每个条目来调用第二个参数。这样,lamda 函数从字典中返回给定项目的值,并且 sorted 可以将其用作键。

如果任何列表条目不在 your_dictionary.keys() 中,这将不起作用。完成字典或使用

    sorted(unsorted_list, key = lambda k: your_dictionary[k] if k in your_dictionary.keys() else k)
于 2012-05-13T09:12:15.313 回答
0

你试过了吗

sorted(list_for_sorting, key=dictionary_you_wrote.__getitem__)

?

于 2012-05-13T07:10:25.647 回答