【问题标题】:Python: sorting list via parameter in another functionPython:通过另一个函数中的参数对列表进行排序
【发布时间】:2018-09-29 13:18:00
【问题描述】:

我正在尝试使用 key=sortby()fruit() 函数进行排序,然后打印到屏幕上 - 无论是在 fruit() 内还是在它自己的函数内。

当没有 fruit() 函数时它工作正常,但我很难找出正确的语法来传递 par 作为要在 fruit() 中使用的参数

fruit = [["Apples", 30], ["Bananas", 100], ["Pears", 0], ["Peaches", 20]]

def sortby(par):
    return par[1]

def fruit():
    rate = []

    fruit.sort(key=sortby, reverse=True)

    for success in fruit:
        rate.append(success[0])
        rate.append(success[1])

    str = str(rate)

print(str)

【问题讨论】:

  • 你的函数被命名为fruit...所以函数内部的fruit指的是函数本身——而不是它外面的fruit列表......你也永远不会返回rate。 ...最后一个 print(str) 只是要打印内置方法 - 除非它应该在 fruit (或您选择的任何名称)内缩进

标签: python function sorting parameters


【解决方案1】:

您的代码有几个问题:

  1. 您需要从您的fruit 函数中返回一个值
  2. 您需要为 fruit 函数指定一个与列表不同的名称
  3. 您需要在某个时候实际调用fruit 函数
  4. 避免使用 str 作为变量名,因为这是 Python 中的 built-in function

不过,sortby 函数可以正常工作。

fruit = [["Apples", 30], ["Bananas", 100], ["Pears", 0], ["Peaches", 20]]

def sortby(par):
    return par[1]

def sort_fruit():
    rate = []

    fruit.sort(key=sortby, reverse=True)

    for success in fruit:
        rate.append(success[0])
        rate.append(success[1])

    return rate

print(sort_fruit())

【讨论】:

  • 或者整个程序可以是:fuit = [...],然后是print([el for pair in sorted(fruit, key=lambda L: L[1], reverse=True) for el in pair])...但现在可能有点多...
  • 非常感谢。尝试通过函数中的参数传递变量时,我似乎有一个心理障碍。但这非常有效 - 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 2014-09-18
  • 2020-10-25
  • 2020-03-19
  • 2017-08-20
  • 2011-10-31
相关资源
最近更新 更多