我有以下在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等)
任何帮助将不胜感激...鲍勃
答案 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