首页 > 解决方案 > 删除重复值并查找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

标签: pythonlistdirectoryduplicates

解决方案


假设您输入如下:

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=Truesort从多到少)

[
  ('key3', ['val3']), 
  ('key2', ['val2', 'val6']), 
  ('key1', ['val1', 'val4', 'val5'])
]

推荐阅读