如何计算列表中的值 Python 3

How to count values in a list Python 3

我有这样的代码:

winners = [red, blue, yellow]

player_1_guesses = [red, green, orange]
player_2_guesses = [red, blue, orange]
player_3_guess = [red, green, yellow]

我想计算 winners 中的每个值在三个 player_x_guesses 列表中出现的次数。所以我希望看到类似的东西:

totals = {'red': 3, 'blue': 1, 'yellow': 1}

我不太确定这种数据分析 (?) 叫什么,甚至不确定要 google 什么才能实现我想要的。

感谢您的帮助。

尝试这样做:

all_guesses = player_1_guess + player_2_guess + player_3_guess
dct = {i:all_guesses.count(i) for i in winners}

输出:

{'blue': 1, 'yellow': 1, 'red': 3}

使用collections

from collections import Counter

dct = Counter(word for word in all_guesses if word in winners)

不确定我是否违反了这里的规则,但我的方法是搜索 "python compare string arrays" 我得到了这个:Compare string with all values in array

您有一个 list/array 个字符串要与其他三个 lists/arrays 进行比较。

假设您想知道有多少玩家猜对了正确的颜色和正确的位置。换句话说,player_1_guesses = [green, red, orange] 不能算作对红色的正确猜测,因为它不在第一个位置,例如你的例子。

在我看来,您的代码逻辑应该是这样的(顺便说一句,这不是 python 代码!):

  1. 获得优胜者[0],即'red'
  2. 根据 player_n_guesses[0] 中的值检查 winners[0],并将结果记录在名为 red 的变量中(例如,如果 player_n_guesses[0]==winners[ 0]:红色 +=1)

  3. 使用嵌套 for 循环遍历所有内容,然后使用格式化方法制作总计列表。

我希望有一种更有效的方法可以直接比较矩阵 - 尝试搜索 'string matrix comparison python' 或类似的东西。