gpt4 book ai didi

Python - 列表的排序列表

转载 作者:行者123 更新时间:2023-12-01 06:10:49 25 4
gpt4 key购买 nike

大家好我可能遗漏了一些明显的东西

创建列表列表(用 C++ 表示法“向量\\>”),然后尝试使用某些字段作为排序键对内部列表(“记录”)进行排序。但这是行不通的。尝试了两个不同的版本:使用“lambda”和“itemgetter”。没有错误或警告。我做错了什么?

//** 我的代码:开始

fwReport 类:

def __init__(self):
#each field from firewall log file, 17 all together
self.fieldnames = ("date", "time", "action", "protocol", \
"src-ip", "dst-ip", "src-port", "dst-port" \
"size", "tcpflags", "tcpsyn", "tcpack", \
"tcpwin", "icmptype", "icmpcode", "info", "path")
self._fields = {}
self.mx = list()
self.dst_ip = collections.Counter()
self.src_ip = collections.Counter()

def openfn(self):
try:
with open(fn) as f: data = f.read()
except IOError as err:
raise AssertionError("Can't open %s for reading: %s" % (fn, err))
return
#make a matrix out of data, smth. like list<list<field>>
#skip first 5 lines (file header)
for fields in data.split("\n")[5:25]:
temp = fields.split(" ")[:6] #take first 7 fields
self.src_ip[temp[4]] += 1 #count source IP
self.dst_ip[temp[5]] += 1 #count destination IP
self.mx.append(temp) #build list of lists
#sorted(self.mx, key=itemgetter(5)) #----> does not work
sorted(self.mx, key=lambda fields: fields[5]) #--------> does not work
for i in range(len(self.mx)):
print(i, " ", self.mx[i][5])
#print(self.dst_ip.most_common(16))
#print(self.src_ip.most_common(16))
print(self.mx[:5][:])
#print(len(self.dst_ip))

*********

def main():

mx = [["a", "b", "c"], ["a", "c", "b"], ["b", "a", "c"]]

mx = sorted(mx, key=lambda v: v[1])

for i in range(len(mx)):
print(i, " ", mx[i], " ", mx[i], end="\n")

0 ['b', 'a', 'c'] ['b', 'a', 'c']

1 ['a', 'b', 'c'] ['a', 'b', 'c']

2 ['a', 'c', 'b'] ['a', 'c', 'b']

****

工作正常。

@Ned Batchelder - 谢谢

最佳答案

sorted 返回新的排序列表。您没有将值分配给任何东西。尝试:

self.mx = sorted(self.mx, key=itemgetter(5))

关于Python - 列表的排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5998368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com