我试图找到解释但不能,所以如果这是一个愚蠢的问题,我很抱歉。
拥有数据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 ['性别']对于n,d”如何在“Counter([d ['性别']为n,d在x)]”中起作用。 在这种情况下,究竟什么是“n”?
非常感谢任何指示。
答案 0 :(得分:1)
x
是一个列表,因此for <whatever> in x
会遍历x
并将每个元素分配到<whatever>
。
x
的元素是元组,因此您可以使用元组赋值将元组中的每个项目分配给不同的变量。 for n, d in x
表示为n
分配了元组中的第一个项目,d
被分配了第二个项目。
所以第一次迭代
n, d = (1, {'gender': 'male'})
这会设置n = 1
和d = {'gender': 'male'}
。
下一次迭代
n, d = (2, {'gender': 'female'})
这会设置n = 2
和d = {'gender': 'female'}
。等等整个列表。
最后,列表推导返回d['gender']
的列表,它是字典中的gender
元素。
n
未使用,只需将其作为占位符,以便d
可以分配给元组中的第二个项目。它也可以写成:
[el[1]['gender'] for el in x]