在Python中对包含字符串和数字值的三个平行列表进行排序

0 投票
2 回答
562 浏览
提问于 2025-04-15 15:57

如何使用三个并行的数组列表进行排序:

num1 = ['a','b','c']
num2 = ['apple','pear','grapes']
num3 = [2.5, 4.0, 0.68]

我用了两个循环和一个条件判断。根据元素进行排序,输出应该是:

a apple 2.5
b pear 4.0
c grapes 0.68

不幸的是,我在使用元素交换排序时遇到了问题,特别是对第三个num3的值进行排序。有什么建议吗?

2 个回答

1

根据你想要的输入和输出,看来你并不需要排序,只需要:

num1 = ['a','b','c']
num2 = ['apple','pear','grapes']
num3 = [2.5,4.0,.68]
for item in [x for t in zip(num1, num2, num3) for x in t]:
  print item,
print

这个确实能给出你提到的输出——这就是你想要的吗?

2

既然你说这些列表是平行的,那我们就把它们组合成一组一组的元组,然后对这些元组的列表进行排序。

num1 = ['a','b','c']
num2 = ['apple','pear','grapes']
num3 = [2.5,4.0,.68]

lst = zip(num1, num2, num3)
lst.sort()

for x1, x2, x3 in lst:
    print x1, x2, x3,

print

结果是:

a 苹果 2.5 b 梨 4.0 c 葡萄 0.68

撰写回答