我有这样的代码:
all_sorted = [['9', 's'], ['11', 'h'], ['2', 's'], ['13', 'c'], ['13', 's'], ['11', 's'], ['3', 'd']]
pairness = {str(i): 0 for i in range(14, 1, -1)}
for card in all_sorted:
pairness[card[0]] += 1是否有可能用1行效率更高的代码来编写第2-4行代码?
发布于 2019-01-22 14:33:31
更短,但我不知道有多快(可能不是很多,如果有的话)
>>> from collections import Counter
>>> Counter(x for x, _ in all_sorted)
Counter({'11': 2, '13': 2, '9': 1, '2': 1, '3': 1})发布于 2019-01-22 14:42:48
使用collections.Counter创建零值键(与预期输出匹配)的版本:
from collections import Counter
all_sorted = [['9', 's'], ['11', 'h'], ['2', 's'], ['13', 'c'], ['13', 's'], ['11', 's'], ['3', 'd']]
pairness = {**{str(i): 0 for i in range(14, 1, -1)}, **Counter(head for head, *_ in all_sorted)}
print(pairness)输出
{'8': 0, '11': 2, '14': 0, '4': 0, '12': 0, '3': 1, '2': 1, '13': 2, '5': 0, '10': 0, '7': 0, '6': 0, '9': 1}https://stackoverflow.com/questions/54310480
复制相似问题