根据另一个列表数组排序列表数组

时间:2019-02-12 03:26:40

标签: python

对于此问题,我不允许使用zip功能:

我有两个数组,其中一个是苹果类型列表,另一个是引用每个苹果的甜度的数组。

names = ['Fuji', 'Honeycrisp', 'Ambrosia', 'Gala', 'Red Delicious', 'Mcintosh', 'Granny Smith']
sweetness = [3, 5, 8, 6, 7, 7.5, 1]

names[0]sweetness[0]都对应于富士。

我需要始终使用一个排序的函数而不是使用zip函数来排列苹果的名称。

2 个答案:

答案 0 :(得分:0)

zip()是执行此操作的有效方法,但是您可以选择不包含zip()的元素,例如:

代码:

names = ['Fuji', 'Honeycrisp', 'Ambrosia', 'Gala', 'Red Delicious',
         'Mcintosh', 'Granny Smith']
sweetness = [3, 5, 8, 6, 7, 7.5, 1]

data = sorted((names[i], sweetness[i]) for i in range(len(names)))

结果:

[('Ambrosia', 8), ('Fuji', 3), ('Gala', 6), ('Granny Smith', 1), 
 ('Honeycrisp', 5), ('Mcintosh', 7.5), ('Red Delicious', 7)
]

答案 1 :(得分:0)

使用sweetness作为键,而不使用指定的zip()

>>> [names[i] for i in sorted(range(len(names)), key=lambda i: sweetness[i])]
['Granny Smith', 'Fuji', 'Honeycrisp', 'Gala', 'Red Delicious', 'Mcintosh', 'Ambrosia']