计算XML值列表的出现频率

时间:2019-11-14 13:59:48

标签: python list frequency counting

我有以下在Python中使用的代码,用于从讨论列表中获得唯一用户ID的计数:


import xml.etree.ElementTree as ET
tree = ET.parse('Combined.xml')
root = tree.getroot()

for node in tree.findall('.//discussions/discussion/userid'):
    print (node.text)


print (len(tree.getroot().findall('.//discussions/discussion/userid'))) 
unique_list = [] 


for x in tree.getroot().findall('.//discussions/discussion/userid'): 
        if x not in tree.getroot().findall('.//discussions/discussion/userid'): 
            unique_list.append(x) 
for x in unique_list: 
        print ("The unique list is: ", x, end="") 

我收到以下内容作为输出:

... 16055 16055 16059 1760 22519 16055 21961 16790 13764 13779 13764 18601 18398 16790 25092 154

有什么方法可以计算此列表中唯一值的出现频率? (例如16055:2、16059:1等)

任何帮助将不胜感激...鲍勃

3 个答案:

答案 0 :(得分:0)

要生成计数器,您可以生成字典并增加其计数器:

count_dict = {}

for x in tree.getroot().findall('.//discussions/discussion/userid'):
        if x not in unique_list:
            unique_list.append(x)
            count_dict[x] = 1
        else:
            count_dict[x] = count_dict[x] + 1

答案 1 :(得分:0)

Counter在这里可以很好地工作:

from collections import Counter

c = Counter(tree.getroot().findall('.//discussions/discussion/userid'))

原因是Counter是基于dict的,它具有唯一的键

答案 2 :(得分:0)

您可以出于以下目的使用Python字典:

id_count = {}
for u in unique_list:
    if u in id_count:
        id_count[u] += 1
    else:
        id_count[u] = 1
相关问题