Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据可能值列表对列表中的元素进行计数_Python_List_Counter - Fatal编程技术网

Python 根据可能值列表对列表中的元素进行计数

Python 根据可能值列表对列表中的元素进行计数,python,list,counter,Python,List,Counter,我的清单如下: a = [50, 75, 75, 100, 50, 50, 75, 50, 75] 可能的值为:0,25,50,75和100 在此基础上,我想将字典中的值分组为: result= {'0':0,'25':0,'50':4,'75':4,'100':1} 我尝试过收藏: import collections a = [50, 75, 75, 100, 50, 50, 75, 50, 75] counter=collections.Counter(a) 但结果是: Counte

我的清单如下:

a = [50, 75, 75, 100, 50, 50, 75, 50, 75]
可能的值为:0,25,50,75和100

在此基础上,我想将字典中的值分组为:

result= {'0':0,'25':0,'50':4,'75':4,'100':1}
我尝试过收藏:

import collections
a = [50, 75, 75, 100, 50, 50, 75, 50, 75]
counter=collections.Counter(a)
但结果是:

Counter({50: 4, 75: 4, 100: 1})
不考虑“0”:0,“25”:0


如何将选项列表传递给此函数或其他函数

您可以使用
dict.fromkeys()
创建默认值为
0
的空字典,然后将其与
计数器()合并
输出:

from collections import Counter

a = [50, 75, 75, 100, 50, 50, 75, 50, 75]
possible =[0,25,50,75, 100]

{**dict.fromkeys(possible, 0), **Counter(a)}
# {0: 0, 25: 0, 50: 4, 75: 4, 100: 1}


对于我建议的解决方案,您需要定义一个列表(或其他类型的iterable),其中包含所有可能的键(在您的示例中为整数)

您可以构建一个新的
dict
,为
计数器中找不到的键分配值
0
。在这里,我们可以使用它的一个很好的小属性(感谢@MykolaZotko指出这一点):

计数器
对象有一个字典接口,除了它们为缺少的项返回零计数,而不是引发
键错误

因此,代码可以是:

import collections
possible_keys = [0, 25, 50, 75, 100]

data = [50, 75, 75, 100, 50, 50, 75, 50, 75]
counter = collections.Counter(data)
我们可以创建一个新的
dict
,其中缺少的元素为零:

dict_with_zeros = {
    k: counter[k]
    for k in possible_keys}
或者,如果您只需要打印计数器,而不实际创建带有零的新的
dict

for k in possible_keys:
    print(k, counter[k])

我会用下面的方法来做:

a = [50, 75, 75, 100, 50, 50, 75, 50, 75]
possible = [0,25,50,75,100]
result = {p:0 for p in possible}
for i in a:
    result[i] += 1
print(result)  # {0: 0, 25: 0, 50: 4, 75: 4, 100: 1}

您可以使用这些值创建一个新的字典,而无需像下面这样使用其他导入:

a = [50, 75, 75, 100, 50, 50, 75, 50, 75]
required = [0,25,50,75,100]

result = {item:a.count(item) for item in required}
这是一个,;它创建
required
中存在的所有键,并统计它们在
a
中出现的次数(如果有)<代码>结果
将包含

{0: 0, 25: 0, 50: 4, 75: 4, 100: 1}

“**”代表什么?@LuisRamonRamirezRodriguez,字典解包。请参阅3.5或更高版本(我认为)中的可用性。请尝试
{k:counter[k]for k in可能的_键}
{0: 0, 25: 0, 50: 4, 75: 4, 100: 1}