首页 / PYTHON / 逐行比较文件python
逐行比较文件python
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了逐行比较文件python,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1297字,纯文字阅读大概需要2分钟。
内容图文
按照第一个索引查看排序列表的最优雅方法是什么?输入:
Meni22 xxxx xxxx
Meni32_2 xxxx xxxx
Meni32_2 xxxx xxxx
Meni45_1 xxxx xxxx
Meni45_1 xxxx xxxx
Meni45 xxxx xxxx
它是逐行走的:
list1 = []
list2 = []
for line in input:
if line[0] not in list1:
list.append(line)
else:
list2.append(line)
示例显然不起作用.它添加了第[0]行的第一个匹配并继续.我宁愿让它通过列表,添加到list1行,它只找到一次,然后休息到list2.
脚本之后:
List1:
Meni22 xxxx xxxx
Meni45 xxxx xxxx
List2:
Meni45_1 xxxx xxxx
Meni45_1 xxxx xxxx
Meni32_2 xxxx xxxx
Meni32_2 xxxx xxxx
解决方法:
你可以使用collections.Counter:
from collections import Counter
lis1 = []
lis2 = []
with open("abc") as f:
c = Counter(line.split()[0] for line in f)
for key,val in c.items():
if val == 1:
lis1.append(key)
else:
lis2.extend([key]*val)
print lis1
print lis2
输出:
['Meni45', 'Meni22']
['Meni32_2', 'Meni32_2', 'Meni45_1', 'Meni45_1']
编辑:
from collections import defaultdict
lis1 = []
lis2 = []
with open("abc") as f:
dic = defaultdict(list)
for line in f:
spl =line.split()
dic[spl[0]].append(spl[1:])
for key,val in dic.items():
if len(val) == 1:
lis1.append(key)
else:
lis2.append(key)
print lis1
print lis2
print dic["Meni32_2"] #access columns related to any key from the the dict
输出:
['Meni45', 'Meni22']
['Meni32_2', 'Meni45_1']
[['xxxx', 'xxxx'], ['xxxx', 'xxxx']]
内容总结
以上是互联网集市为您收集整理的逐行比较文件python全部内容,希望文章能够帮你解决逐行比较文件python所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】