我有一个清单:
['8C', '2C', 'QC', '5C', '7C', '3C', '6D', 'TD', 'TH', 'AS',
'QS', 'TS', 'JS', 'KS']
我需要一本这样的字典:(排序不重要)
{'C': ['QC', '8C', '7C', '5C', '3C', '2C'],
'S': ['AS', 'KS', 'QS', 'JS', 'TS']
}
代码:
def parse_flush(cards):
cards = sort_by_color(cards)
flush_dic = {}
print str(cards)
count = 0
pos = 0
last_index = 0
for color in colors:
for i, card in enumerate(cards):
if card[1] == color:
count += 1
last_index = i+1
if count == 1:
pos = i
if count >= 5:
flush_dic[color] = sort_high_to_low(cards[pos:last_index])
count = 0
return flush_dic
我的代码现在看起来像,它可以工作,但我不喜欢它的长度有可能使它更短使用python技巧?你知道吗
您可以使用简单的^{} 来获得所需的结果
输出
您也可以使用^{} 来解决这个问题
解释
sorted
返回已排序的项列表,并使用keyFn
对数据进行排序。你知道吗groupby
接受一个排序列表,它根据keyFn
对项目进行分组,在这种情况下keyFn
返回每个项目的第二个元素,结果如输出所示。你知道吗输出
使用非常简单的for循环:
相关问题 更多 >
编程相关推荐