私はPythonが初めてで、ciscoルーターからの「show ip accounting」情報をソートするスクリプトを作成しました。スクリプトはファイルを読み取り、すべての行をリストに分割してから、すべての行のリストを作成します。だから私はリストのリストになります:
list a = [[192.168.0.1,172.16.0.1,3434,12222424],[192.168.2.1,172.12.0.1,33334,12667896722424]]
リスト内のリストの3列目または4列目でソートできるようにしたいです。
ラムダ関数を使用してそれを行うことができましたが、私の質問は、標準関数を使用してこれを複製する方法ですか?
ここに私のコードがあります:
from sys import argv
script, option, filename = argv
a=[]
b=[]
def openfile(filename):
file = open(filename)
for line in file:
if not line.startswith(" "):
a.append((line.split()))
return a
def sort(a,num):
b = sorted(a, reverse=True, key=lambda x: int(x[num]))
return b
def top5(b):
print "Source Destination Packets Bytes"
for i in b[:4]:
print i[0]+" "+i[1]+" "+i[2]+" "+i[3]
def main(option):
a = openfile(filename)
if option == "--bytes":
b = sort(a,3)
top5(b)
elif option == "--packets":
b = sort(a,2)
top5(b)
else:
print """
Not a valid switch,
--bytes to sort by bytes
--packets to sort by packets."""
main(option)
だから私の質問は、ラムダ関数を標準のカスタムソート関数として複製するにはどうすればよいですか? これがどのように機能するかを理解しようとしています。
b = sorted(a, reverse=True, key=lambda x: int(x[num]))