所以我把这个文本文件看起来像这样:
PID TTY TIME CMD
1000 pts/2 00:00:00 aash
9000 pts/2 00:00:00 bash
3000 pts/2 00:00:00 cash
我想要最终得到的是某种字典,我保存|(PID,CMD)|按PID递减排序。
所以它看起来像这样:
[(9000,bash的),(3000,现金),(1000,aash)]
任何想法? 这就是我读取文件并保存在字典中的方式。
dict = {}
with open('newfile.txt') as f:
next(f) #skipping first line
for line in f:
result[line.split()[3]] = int(line.split()[0])
感谢任何帮助!提前谢谢!
答案 0 :(得分:1)
所以这就是解决方案:
import collections
result = {}
with open('newfile.txt') as f:
next(f)
for line in f:
result[line.split()[3]] = int(line.split()[0])
print(collections.OrderedDict(sorted(result.items(), key=lambda t: t[1])))
这是打印出来的:
OrderedDict([('aash', 1000), ('cash', 3000), ('bash', 9000)])])
答案 1 :(得分:1)
如果您需要以列表结束,那么最好是将数据读入列表然后对其进行排序,具体方法如下:
lst = []
with open('newfile.txt') as f:
next(f)
for line in f:
if line.split() != '': # watch out for empty lines
a, b, c, d = line.split()
lst.append((int(a), d))
lst = sorted(lst)
print(lst)
====
[(1000, 'aash'), (3000, 'cash'), (9000, 'bash')]
sorted()
按元组的第一项排序,因此您可以以基本形式使用它。
如果你需要的是一个字符,其中键被排序,那么你可以使用OrderedDict
,只需导入它并在代码中添加另一行:
from collections import OrderedDict
然后
d = OrderedDict(lst)
print(d)
结果如下:
OrderedDict([(1000, 'aash'), (3000, 'cash'), (9000, 'bash')])