我在python中编写了一个程序,我在其中使用哈希表从文件中读取数据,然后在文件的最后一列中添加与文件第2列中的值对应的数据。例如,对于第2列中具有相同值的所有条目,将添加相应的最后列值。
现在我已成功实施了上述内容。现在我想根据最后一列值按降序对表进行排序,并打印这些值和相应的第二列(键)值。我无法弄清楚如何做到这一点。有人可以帮忙吗?
pmt txt文件格式为
0.418705 2 3 1985 20 0
0.420657 4 5 119 3849 5
0.430000 2 3 1985 20 500
依旧......
因此,例如,对于第2列中的数字2,我添加了与第2列中所有数字“2”对应的最后一列的所有数据。因此,此过程将继续用于第2列中的下一组数字4,5等。
我正在使用python 3
import math
source_ip = {}
f = open("pmt.txt","r",1)
lines = f.readlines()
for line in lines:
s_ip = line.split()[1]
bit_rate = int(line.split()[-1]) + 40
if s_ip in source_ip.keys():
source_ip[s_ip] = source_ip[s_ip] + bit_rate
print (source_ip[s_ip])
else:
source_ip[s_ip] = bit_rate
f.close()
for k in source_ip.keys():
print(str(k)+": "+str(source_ip[k]))
print ("-----------")
答案 0 :(得分:0)
听起来你想使用带有sorted
参数的key
函数来获取键/值元组的值:
sorted_items = sorted(source_ip.items(), key=lambda x: x[1])
你也可以使用itemgetter
模块中的operator
,而不是lambda函数:
import operator
sorted_items = sorted(source_ip.items(), key=operator.itemgetter(1))
答案 1 :(得分:0)
这样的事情怎么样?
#!/usr/local/cpython-3.4/bin/python
import collections
source_ip = collections.defaultdict(int)
with open("pmt.txt","r",1) as file_:
for line in file_:
fields = line.split()
s_ip = fields[1]
bit_rate = int(fields[-1]) + 40
source_ip[s_ip] += bit_rate
print (source_ip[s_ip])
for key, value in sorted(source_ip.items()):
print('{}: {}'.format(key, value))
print ("-----------")