python - 如何在 Python 中使用排序键函数调用?
问题描述
我有一个代表扑克牌的字符串列表。排名可以
A23456789TJQK
这是我的清单
# L2
['5', '6', '7', 'A', 'K']
我正在尝试创建一个函数来调用排序函数中的键,以按顺序返回卡片排名数值。所以这是我的功能:
def sortYo():
myDict = {'A': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'T': 10, 'J': 10, 'Q': 10, 'K': 10}
这是我的电话:
L4 = sorted(L2, key = sortYo())
但我的 L4 的结果是一样的:
# L4
['5', '6', '7', 'A', 'K']
为什么我的 sortYo() 函数没有改变值?先感谢您。
编辑:
from collections import Counter
from itertools import combinations
import sys
myList = sys.argv
myList.pop(0)
Suits = ['H', 'S', 'D', 'C']
Nums = ['A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K']
SuitsTwo = {'♥': 'H', '♦': 'D', '♣': 'C', '♠': 'S'}
print(myList)
L1 = [] # Suits
L2 = [] # Ranks
L3 = [i for i in myList[0]] # Cut
for i in myList:
for x in i:
if x in SuitsTwo:
L1.append(SuitsTwo[x])
elif x in Suits:
L1.append(x)
else:
L2.append(x)
print('L1:'
print(L1)
print('L2:')
print(L2)
print('L3:')
print(L3)
score = 0
# straight
sC = 0
myDict = {'A': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9\
': 9, 'T': 10, 'J': 10, 'Q': 10, 'K': 10}
L4 = sorted(L2, key = lambda x: myDict.get(x,11))
print('L4')
print(L4)
#RUN
python3 as13.py AS 5H 6C 7S KH
['AS', '5H', '6C', '7S', 'KH']
L1:
['S', 'H', 'C', 'S', 'H']
L2:
['A', '5', '6', '7', 'K']
L3:
['A', 'S']
L4
['A', '5', '6', '7', 'K']
0
解决方案
sorted(..., key='A23...JQK'.index)
推荐阅读
- lighting - 如何在eevee中实现硬阴影效果?
- javascript - Node.js:将请求选项转换为最终 URL
- javascript - 在 JavaScript 中有一种方法可以对多维数组中的元素进行求和,并根据数组中的其他元素分组
- hadoop - 将 Hadoop `FileStatus` 映射回 URI 基本相对路径
- angular - 如何在不调用订阅方法的情况下重写 rxjs 代码?
- javascript - 在 useEffect 函数中插入“调度”函数作为依赖项是否安全?
- javascript - 如何使用 CURL 命令从 dynamoDB 中删除项目?
- c++ - 用成对向量提升几何区域?
- prolog - 在 prolog 中为多集编写联合操作
- sql - 从 Azure Blob 到 Snowflake 的增量数据存储过程加载