python - 删除重复值并查找python中具有最多值的键
问题描述
我有这段代码从文本文件中获取信息,该文本文件具有 key1:value1 等值,但其中一些在 1 个键下多次显示。如何删除重复项,然后如何对具有最多和最少值的键进行排序?
def function1(file):
with open("file_name.txt") as file:
name = file.read()
d = {}
for x in name.split():
key, value = x.split(':')
try:
values = d[key]
except KeyError:
values = d[key] = []
values.append(value)
return d
解决方案
假设您输入如下:
lines = '''
key1:val1
key2:val2
key3:val3
key1:val4
key1:val5
key2:val6
'''.strip().split()
这样的事情应该让你开始:
from collections import defaultdict
d = defaultdict(list)
for line in lines:
k,v = line.split(':')
d[k].append(v)
items = sorted(d.items(), key=lambda i:len(i[1]))
print(items)
输出(按从小到大排序,添加reverse=True
到sort
从多到少)
[
('key3', ['val3']),
('key2', ['val2', 'val6']),
('key1', ['val1', 'val4', 'val5'])
]
推荐阅读
- algorithm - 为什么在最近邻搜索中使用散列
- javascript - 无法使用 Node.js 服务器和 Three.js 加载文件的文件路径
- python - PicklingError:无法序列化对象:TypeError:无法序列化“_io.BufferedReader”对象
- r - 单击 navbarPage 菜单时触发 evenReactive
- c# - 使用 Epplus 在 Excel 中交替行着色
- ruby-on-rails - 如何让图像在通过 rails mailer 发送的电子邮件中工作?
- powerbi - 雪花外部表在 Power BI 中不可见
- android - 如何在程序中启用/禁用或显示/隐藏 SharedPreferences
- c# - 这两个正则表达式(匹配和替换)可以组合成一个操作吗?
- pandas - Pandas 适用于不通过字符串拆分扩展