了解 python 中的计数器和字典理解
Understanding counter and dictionary comprehensions in python
我试图找到解释但找不到,如果这是一个愚蠢的问题,我深表歉意。
有数据 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'] for n, d " 在 "Counter([d['gender'] for n, d in x)]" 中是如何工作的。
在这种情况下 "n" 到底是什么?
非常感谢任何指点。
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'}
。依此类推整个列表。
最后,列表推导returns一个d['gender']
的列表,也就是字典中的gender
元素。
n
未使用,只是需要它作为占位符,以便 d
可以分配给元组中的第二项。它也可以写成:
[el[1]['gender'] for el in x]
我试图找到解释但找不到,如果这是一个愚蠢的问题,我深表歉意。
有数据 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'] for n, d " 在 "Counter([d['gender'] for n, d in x)]" 中是如何工作的。 在这种情况下 "n" 到底是什么?
非常感谢任何指点。
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'}
。依此类推整个列表。
最后,列表推导returns一个d['gender']
的列表,也就是字典中的gender
元素。
n
未使用,只是需要它作为占位符,以便 d
可以分配给元组中的第二项。它也可以写成:
[el[1]['gender'] for el in x]