Python 如何使用helper函数实现卡片排序代码?

Python 如何使用helper函数实现卡片排序代码?,python,python-3.x,Python,Python 3.x,谢谢你的帮助,我还在早期学习编程,所以请耐心等待。我被要求修复排序功能,将卡片按正确的顺序排列 如果不使用自定义排序功能对卡片进行排序: print(sorted(deck.cards)) 您将收到: ['10♠', '10♡', '10♢', '10♣', '2♠', '2♡', '2♢', '2♣', '3♠', '3♡', '3♢', '3♣', '4♠', '4♡', '4♢', '4♣', '5♠', '5♡', '5♢', '5♣', '6♠', '6♡', '6♢', '6♣',

谢谢你的帮助,我还在早期学习编程,所以请耐心等待。我被要求修复排序功能,将卡片按正确的顺序排列

如果不使用自定义排序功能对卡片进行排序:

print(sorted(deck.cards))
您将收到:

['10♠', '10♡', '10♢', '10♣', '2♠', '2♡', '2♢', '2♣', '3♠', '3♡', '3♢', '3♣', '4♠', '4♡', '4♢', '4♣', '5♠', '5♡', '5♢', '5♣', '6♠', '6♡', '6♢', '6♣', '7♠', '7♡', '7♢', '7♣', '8♠', '8♡', '8♢', '8♣', '9♠', '9♡', '9♢', '9♣', 'A♠', 'A♡', 'A♢', 'A♣', 'J♠', 'J♡', 'J♢', 'J♣', 'K♠', 'K♡', 'K♢', 'K♣', 'Q♠', 'Q♡', 'Q♢', 'Q♣']
我必须使用自定义排序函数修复此问题。 正确的回答应该是:

['10♢', '10♣', '10♡', '10♠', '2♢', '2♣', '2♡', '2♠', '3♢', '3♣', '3♡', '3♠', '4♢', '4♣', '4♡', '4♠', '5♢', '5♣', '5♡', '5♠', '6♢', '6♣', '6♡', '6♠', '7♢', '7♣', '7♡', '7♠', '8♢', '8♣', '8♡', '8♠', '9♢', '9♣', '9♡', '9♠', 'A♢', 'A♣', 'A♡', 'A♠', 'J♢', 'J♣', 'J♡', 'J♠', 'K♢', 'K♣', 'K♡', 'K♠', 'Q♢', 'Q♣', 'Q♡', 'Q♠']
我必须:

  • 使用排序函数
  • 编写一个自定义排序帮助器函数,可以通过键参数传递给sorted
  • 返回新的卡片列表
  • 西装应该在里面♢,♣,♡,♠ 命令
我对我应该走的方向感到困惑

到目前为止,我已经头脑风暴了我的helper函数来迭代每个项目的第二部分,因为这对应于套装

def sort_helper(x):
  return x[1]

def card_sorter_v1(p):
  x = sorted(p, key=sort_helper)
  return x
print(card_sorter_v1(cards))
不过,这只是对第一个数字的西装进行了正确排序。我不知道如何通过每个数字来确定迭代的目标。我的助手函数中是否存在问题?还是主要功能?

这是什么:

>xs=['10♠', '10♡', '10♢', '10♣', '2.♠', '2.♡', '2.♢', '2.♣', '3.♠', '3.♡', '3.♢', '3.♣', '4.♠', '4.♡', '4.♢', '4.♣', '5.♠', '5.♡', '5.♢', '5.♣', '6.♠', '6.♡', '6.♢', '6.♣', '7.♠', '7.♡', '7.♢', '7.♣', '8.♠', '8.♡', '8.♢', '8.♣', '9♠', '9♡', '9♢', '9♣', 'A.♠', 'A.♡', 'A.♢', 'A.♣', 'J♠', 'J♡', 'J♢', 'J♣', 'K♠', 'K♡', 'K♢', 'K♣', 'Q♠', 'Q♡', 'Q♢', 'Q♣']
>>>自定义_顺序={'♢':1, '♣': 2, '♡': 3, '♠': 4}
>>>已排序(xs,key=lambda x:(x[0],自定义_顺序[x[-1]]))
['10♢', '10♣', '10♡', '10♠', '2.♢', '2.♣', '2.♡', '2.♠', '3.♢', '3.♣', '3.♡', '3.♠', '4.♢', '4.♣', '4.♡', '4.♠', '5.♢', '5.♣', '5.♡', '5.♠', '6.♢', '6.♣', '6.♡', '6.♠', '7.♢', '7.♣', '7.♡', '7.♠', '8.♢', '8.♣', '8.♡', '8.♠', '9♢', '9♣', '9♡', '9♠', 'A.♢', 'A.♣', 'A.♡', 'A.♠', 'J♢', 'J♣', 'J♡', 'J♠', 'K♢', 'K♣', 'K♡', 'K♠', 'Q♢', 'Q♣', 'Q♡', 'Q♠']
>>> 
说明:

  • 将升序数字指定给要排序的符号
  • 使用这些升序数字进行排序
  • 请注意此处的
    -1
    x[-1]
    。您的函数使用
    x[1]
    ,问题是它将在
    10中使用
    0
    而不是最后一个字符

如果您需要像这样对卡片进行排序,可以采用类似的方法:a、2、3、…、9、10、J、Q、K

key
必须是一个函数,该函数返回一个可以通过常规方法进行比较的对象。您需要从该函数返回哪些信息?如果您在浏览器中搜索“Python排序教程”,您将找到比我们在这里能够更好地解释这一点的参考资料。