爲了讓您的整數列表,以動物名稱,你可以使用嵌套列表理解與字典查找:
num_to_animal = {1: 'cat', 2: 'cat', 3: 'cat',
4: 'dog', 5: 'dog', 6: 'dog',
7: 'snake', 8: 'snake', 9: 'snake'}
listA =[[2, 4, 5, 7],
[5, 6, 7, 8],
[1, 2, 5, 8]]
listB = [[num_to_animal[val] for val in row] for row in listA]
listB
# [['cat', 'dog', 'dog', 'snake'],
# ['dog', 'dog', 'snake', 'snake'],
# ['cat', 'cat', 'dog', 'snake']]
但你並不需要一個計算數字每個類別的偶數/奇數值,你只需要檢查值屬於哪個動物,如果它是偶數或奇數。爲此,您可以使用collections.Counter
:
from collections import Counter
def is_even(val):
return val % 2 == 0
cnts = Counter((num_to_animal[val], is_even(val)) for row in listA for val in row)
cnts
# Counter({('cat', False): 1,
# ('cat', True): 2,
# ('dog', False): 3,
# ('dog', True): 2,
# ('snake', False): 2,
# ('snake', True): 2})
的True
和False
表示,如果是偶數。這Counter
可以像任何正常的字典一樣使用:
cnts[('dog', True)]
# 2
行索引是否重要? – lucianopaz
@lucianopaz是的,但用於其他計算。在這種情況下,我在這裏,沒關係。 – utopia