Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_Dictionary - Fatal编程技术网

Python计算字典中值的出现次数

Python计算字典中值的出现次数,python,list,dictionary,Python,List,Dictionary,我想在字典里计算国家的出现率。 我正在从CSV文件中读取所有带有for循环的国家。并将其添加到列表中: landen = [] landen.append({"Datum": datumbestand, "Land": [land]}) 然后我尝试按日期合并所有国家: scores_unique = {} for item in landen: if item['Datum'] not in scores_unique: scores_unique.update({it

我想在字典里计算国家的出现率。 我正在从CSV文件中读取所有带有for循环的国家。并将其添加到列表中:

landen = []
landen.append({"Datum": datumbestand, "Land": [land]})
然后我尝试按日期合并所有国家:

scores_unique = {}
for item in landen:
    if item['Datum'] not in scores_unique:
        scores_unique.update({item['Datum']: item['Land']})
    else:
        scores_unique[item['Datum']] += item['Land']
当我打印输出时,我得到以下信息(我的一小部分数据):

现在,我想从每一天开始看看发生率最高的国家。比如:

2017-11-20:
USA 10x
SK 3x
IE 2x

2017-11-10
USA 20x
GB 15x

看看每个日期发生的不同。但是我尝试了很长时间,但我无法计算发生的次数并打印出来。

您不需要在列表中保留相同项目的重复副本。使用对象直接从CSV读卡器/文件读取每个对象的计数,并将每个计数器键入以下字段中的相应日期:

然后,您可以使用
计数器
对象的
most_common
方法来获取每个日期发生次数最多的国家/地区:

for date, counter in d.items():
    print(date, counter.most_common(3))

您可以从列表中创建字典,并使用
count()
函数来创建字典

这将大致按以下方式进行:

result_occurrences = {i:scores_unique.count(i) for i in scores_unique}
print result_occurrences
这将在Python2.7中工作。对于Python 3,您可以编写:

result_occurrences = {i:list(scores_unique.values()).count(i) for i in scores_unique}
print(result_occurrences)

另一种方法是使用。

这里有一个基于应用值计数的解决方案,即

import pandas as pd    
tup= [('2017-11-20', ['US', 'US', 'US', 'US', 'SK', 'SK', 'IE', 'GB', 
 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 
 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB',
 'GB', 'GB', 'GB', 'ES', 'ES', 'DE', 'CA', 'CA', 'CA', 'CA', 'CA', 
 'CA', 'CA', 'CA', 'CA', 'CA']), 
 ('2017-11-10', ['US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US'])]

count = pd.DataFrame(tup).set_index(0)[1].apply(pd.Series.value_counts).stack()

你能提供一个完整的例子来简化测试吗?
result_occurrences = {i:list(scores_unique.values()).count(i) for i in scores_unique}
print(result_occurrences)
import pandas as pd    
tup= [('2017-11-20', ['US', 'US', 'US', 'US', 'SK', 'SK', 'IE', 'GB', 
 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 
 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB', 'GB',
 'GB', 'GB', 'GB', 'ES', 'ES', 'DE', 'CA', 'CA', 'CA', 'CA', 'CA', 
 'CA', 'CA', 'CA', 'CA', 'CA']), 
 ('2017-11-10', ['US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 
'US', 'US', 'US', 'US'])]

count = pd.DataFrame(tup).set_index(0)[1].apply(pd.Series.value_counts).stack()
2017-11-20 CA 10.0 DE 1.0 ES 2.0 GB 28.0 IE 1.0 SK 2.0 US 4.0 2017-11-10 US 61.0 dtype: float64
count.to_dict()

{('2017-11-20', 'ES'): 2.0, ('2017-11-20', 'US'): 4.0, ('2017-11-20', 'CA'): 10.0, ('2017-11-20', 'GB'): 28.0, ('2017-11-20', 'SK'): 2.0, ('2017-11-20', 'IE'): 1.0, ('2017-11-10', 'US'): 61.0, ('2017-11-20', 'DE'): 1.0}