gpt4 book ai didi

python - 按字母顺序对结构中的数组进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:19 25 4
gpt4 key购买 nike

当我在某些列的函数中按字母顺序对结构进行排序时,我的代码出现问题

例如我有:

name: Bela message: abc priority: 1
name: Carla message: efg priority: 0
name: Ana message: xyz priority: 0

输出需要如下所示:

name: Ana message: xyz priority: 0
name: Bela message: abc priority: 1
name: Carla message: efg priority: 0

我的代码是这样的:

class structura:
prioritate = 0
destinatar = ""
continut = ""
n = input("mesaje maxime: ");
cutie = [structura() for i in range(n)]

for i in range(n):
print "\nAdaugare mesaj %d" %(i + 1)
cutie[i].prioritate= input("Prioritate mesaj :")
cutie[i].destinatar = raw_input("Destinatar mesaj: ")
cutie[i].continut = raw_input("Continut mesaj: ")

i=0
while i<n-1:
if cutie[i].prioritate==0:
if cutie[i].destinatar>cutie[i+1].destinatar:
cutie[i].destinatar,cutie[i+1].destinatar=cutie[i+1].destinatar,cutie[i].destinatar
cutie[i].continut,cutie[i+1].continut=cutie[i+1].continut,cutie[i].continut
i=0
print i
else:
i+=1
else:
i+=1

for i in range(n):
print "cutie: prioritate= %d | destinatar= %s | continut= %s" %(cutie[i].prioritate, cutie[i].destinatar, cutie[i].continut)

但是使用这个排序代码是行不通的(它只是排序 cutie.destintar,而不是 cutie.destintar 和 cutie.continut):

i=0
while i<n-1:
if cutie[i].prioritate==0:
if cutie[i].destinatar>cutie[i+1].destinatar:
cutie[i].destinatar,cutie[i+1].destinatar=cutie[i+1].destinatar,cutie[i].destinatar
cutie[i].continut,cutie[i+1].continut=cutie[i+1].continut,cutie[i].continut
i=0
print i
else:
i+=1
else:
i+=1

我也尝试过排序函数,但它不适用于我的结构形式。有解决办法吗?

最佳答案

您想要根据属性对对象进行排序。 sorted 接受一个 key 参数,它是您要排序的值。

my_sorted_list = sorted(cutie, key = lambda x: x.destinatar)

关于python - 按字母顺序对结构中的数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41640957/

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