理解python中的计数器和字典理解

理解python中的计数器和字典理解,python,dictionary,list-comprehension,counting,dictionary-comprehension,Python,Dictionary,List Comprehension,Counting,Dictionary Comprehension,我试图找到一个解释,但是找不到,所以如果这是一个愚蠢的问题,我很抱歉 具有数据x: x = [(1, {'gender': 'male'}), (2, {'gender': 'female'}), (3, {'gender': 'male'}), (4, {'gender': 'female'}), (5, {'gender': 'male'})] ... 计算每种性别发生率的一个可行的解决方案是: from collections

我试图找到一个解释,但是找不到,所以如果这是一个愚蠢的问题,我很抱歉

具有数据x:

 x = [(1, {'gender': 'male'}),
      (2, {'gender': 'female'}),
      (3, {'gender': 'male'}),
      (4, {'gender': 'female'}),
      (5, {'gender': 'male'})]
      ...
计算每种性别发生率的一个可行的解决方案是:

from collections import Counter
Counter([d['gender'] for n, d in x)])
返回:

Counter({'female':2, 'male':3})
现在我试图理解d['gender']对于n,d在计数器[d['gender']中对于n,d在x]中是如何工作的。 在这种情况下n到底是什么

非常感谢您的指点。

x是一个列表,因此for在x中迭代x并将每个元素分配给

x的元素是元组,因此可以使用元组分配将元组中的每个项分配给不同的变量。对于n,x中的d表示n被指定为元组中的第一项,d被指定为第二项

第一次迭代就是这样

n, d = (1, {'gender': 'male'})
n, d = (2, {'gender': 'female'})
这将设置n=1和d={'gender':'male'}

下一次迭代会

n, d = (1, {'gender': 'male'})
n, d = (2, {'gender': 'female'})
这将设置n=2和d={'gender':'female'}。从整个列表中依次类推

最后,列表理解返回d['gender']的列表,这是字典中的性别元素

n没有使用,它只是需要作为占位符,以便可以将d分配给元组中的第二个项。它也可以写成:

[el[1]['gender'] for el in x]

... 如果你有一个基本问题,为什么选择问StackOverflow而不是阅读教程?请研究一下。更不用说有几十亿,也不是那么多,但无论如何,关于列表理解的问题等等。谢谢@user202729我就是找不到关于这个字典设置的明确解释,特别是在这个例子中的n是什么。简短回答:n是一个变量。@liliscent谢谢,只是一个小提示:不要浪费每个人的时间,在没有试图帮助的情况下评论某人不理解的东西。非常感谢Barmar!这太有用了!