python-3.x - Python3 - 如何从列表中读取单词作为键,然后计算它们的出现并将其作为值存储到键中
问题描述
我从一个包含如下内容的文件中获取信息:
1:Record:Place1:Ext12
2:Record:Place2:Ext2
3:Record:Place1:Ext19
4:Record:Place1:Ext12
我正在尝试将诸如 Place1 和 Place2 之类的单词存储在字典中作为键,然后计算它们的出现次数并将整数分别存储count
为这些键的值。
file = open('./Records.txt', mode='r')
d_file = file.read()
location = dict()
count = 0
for item in d_file.splitlines():
items = item.split(':')
key = items[2]
if key == items[2]:
count += 1
location[key] = count
print(location)
解决方案
收藏模块中有一个计数器功能。(点击阅读官方文档)
它完全符合您的要求。它采用可迭代或映射并返回键的字典和出现次数作为值。
from collections import Counter
#open file, etc
keys = [item.split(':')[2] for item in d_file.splitlines()]
print(Counter(keys))
在上面的代码片段中,根据您的格式列出了所有键出现的列表,然后打印出出现次数的字典。
假定该文件具有正确格式化的行,因此item.split(':')[2]
存在。我建议查看此答案以获得更安全的 str 分区如何在 Python 中可靠地拆分字符串,当它可能不包含模式或所有 n 元素时?
推荐阅读
- javascript - 如何防止嵌入式 Javascript 自动滚动页面
- google-apps-script - 如何在不更改 Google 工作表上的整行的情况下使用数据验证自动填充单元格?
- firebase - 从 Firebase Storage 获取图片并展示给用户 Flutter
- reactjs - React img 显示 [object Module] 而不是图像
- python - 带有图像输入的 django 表单
- html - 将文本与按钮放在同一行
- css - 如何在 Tailwind 中创建具有间隙的等宽列网格?
- r - RenderTable 函数在循环中表现异常
- javascript - 通过读取java中的页面源获取验证码url(验证码由嵌入在页面html源中的javascript文件生成)
- dns - OKHttp异步DNS查找