如何在列表中找到按特定顺序排列并包含字母的最高字符?

2024-04-18 00:40:36 发布

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

例如,如果我有字符串'4K892',我把它做成一个列表,每个字符都是分开的。如何使用此顺序“23456789TJQKA”打印最高字符

伪代码:

list = [4, K, 8, 9, 2]
Highestcharacter(list) = 'K'

Tags: 字符串代码列表顺序字符listhighestcharacter
3条回答

我会使用查找词典:

class Hand:
    def __init__(self, hand):
        self.ranking = {char: index for index, char in enumerate("23456789TJQKA")}
        self.hand = hand

    def sort(self):
        self.hand.sort(key=lambda x: self.ranking[x])

    def __str__(self):
        return str(self.hand)

h = Hand(['4', 'K', '8', '9', '2'])
print(h) # ['4', 'K', '8', '9', '2']
h.sort()
print(h) # ['2', '4', '8', '9', 'K']

展示max(list,key)函数背后的算法

从orderd的末尾开始检查伪列表中的每个字符-列表。每当您进行匹配时,您将结果保存在第三个数组中。它们较高的结果与伪列表的较高字符位于同一单元格中

例如,可以使用max函数的键参数

慢速版本

order = '23456789TJQKA'
result = max('4K892', key=order.index)
print(result)

快速版本

order = '23456789TJQKA'
lookup = {v : i for i, v in  enumerate(order)}
result = max('4K892', key=lookup.get)
print(result)

注意,fastslow表示函数的复杂性,slow版本是O(n*2)fast版本是O(n)。你知道吗

相关问题 更多 >

    热门问题