基于另一个列表数组对列表数组进行排序

2024-06-09 16:37:38 发布

您现在位置: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函数,将苹果的名称按顺序排列


Tags: 函数苹果类型列表namesred数组zip
2条回答

zip()是pythonic方法,但是您可以选择不带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)
]

使用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']

相关问题 更多 >