从文件中重复数据删除列表,同时按顺序-python3.5

时间:2016-09-30 18:46:48

标签: list duplicates python-3.5 alphabetical

我正在尝试打开一个文件,将其拆分,按字母顺序排序,然后删除重复项。我已经能够打开文件,拆分它,正确地命令它,并把它放在一个列表中但是我在重复删除它时遇到了麻烦。我如何打印出按字母顺序和重复数据删除的列表?

以下是我目前的情况:

userinp = input('Enter file: ')
romeo = open(userinp)
inp = romeo.read()
sections = inp.split()
sections.sort()
shakespeare = list(sections)
for i in sections:
    if i not in shakespeare:
        shakespeare.append(i)
print(shakespeare)

2 个答案:

答案 0 :(得分:0)

我只是做了一个简单的样本:

a = [9,8,7,6,5,4,3,2,1]
for i in a:
  b[i] = 0
b = [x for x in b]

这将限制您的结果集。

在您的代码中,使用相同的过程:

userinp = input('Enter file: ')
romeo = open(userinp)
inp = romeo.read()
sections = inp.split()
shakespeare = {}
for i in sections:
  shakespeare[i] = 0
shakespeare = [x for x in b]
print(shakespeare)

我的前提是:

  • 循环数组并注入地图,创建一个唯一的密钥。
  • 然后循环遍历地图,将其转回列表。
    • 这是通过在排序的庄园中遍历数组来自动排序的,但是如果您愿意,您可以随时调用.sort()再次确认。

答案 1 :(得分:0)

使用OrderedDict

假设你有file.txt包含

b
b
c
a

你可以做到

from collections import OrderedDict

with open('file.txt', 'rb') as f:
    lines = f.readlines()
    lines.sort()
    for line in OrderedDict.fromkeys(lines):
        print(line.strip())

将打印出来

a
b
c