计算XML值列表的频率

2024-04-27 19:26:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在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等等……)

任何帮助都将不胜感激…鲍勃


Tags: innodetree列表forxmllistet
3条回答

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

id_count = {}
for u in unique_list:
    if u in id_count:
        id_count[u] += 1
    else:
        id_count[u] = 1

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

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

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

from collections import Counter

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

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

相关问题 更多 >