从文件中删除重复列表,同时保持顺序-python3.5

问题描述:

我想打开一个文件,拆分它,按字母顺序排序,然后删除重复项。我已经能够打开文件,分割文件,正确排列文件,并将其放入列表中,但是我很难对其进行重复数据删除。我将如何去打印出一个按字母顺序排列和重复数据删除的列表?从文件中删除重复列表,同时保持顺序-python3.5

这是我目前有:

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) 
+0

即时通讯有点问题了解你想做什么。 – Fallenreaper

+0

对不起。我正在尝试从文件中删除重复文字,并按字母顺序打印出来。我遇到的麻烦是将其重复数据删除并按字母顺序排列。我能够得到一个或另一个,但不能两个。那有意义吗? – jaywah

+0

我的意思是,你可以做到这一点。所以以我的答案为例,它显示了排序数组上的列表重复。你想在排序之前复制吗? – Fallenreaper

我只是做一个简单的示例:

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()来重新确认您是否选择。

使用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