需要帮助排序namedtuple然后在Python中打印每个namedtuple的名称

时间:2016-01-29 06:39:06

标签: sorting namedtuple

你好,我在使用函数时遇到了一些困难。

我在namedtuples中获得了一个餐馆列表(RL),并被要求创建一个按字母顺序对列表进行排序的函数,然后只返回每个namedtuple的名称。 这就是我到目前为止所拥有的

def alphabetical_names(r: Restaurant) -> list:
'''returns the name of all restaurants sorted alphabetically
'''
    for restaurants in sorted(r):
        return(Restaurant.name)

print(alphabetical_names(RL))

然而,当我跑这个时,我唯一得到的就是 '属性对象位于0x034A4A80>'我不知道为什么

1 个答案:

答案 0 :(得分:0)

您的代码存在许多问题。

  • 您已宣布r为餐厅而非列表。
  • 你给for循环的变量名称是复数 - 这很令人困惑。
  • 最重要的是,你提到了餐厅课程,而不是餐厅的实例。

尝试:

def alphabetical_names(r: list) -> list:
'''returns the name of all restaurants sorted alphabetically
'''
    for restaurant in sorted(r):
        return(restaurant.name)

print(alphabetical_names(RL))

然而,这仍然存在问题,因为您只返回第一个结果,而不是列表。所以试试:

def alphabetical_names(r: list) -> list:
'''returns the name of all restaurants sorted alphabetically
'''
    return sorted(r):

print(alphabetical_names(RL))

这可能不按您想要的顺序对条目进行排序,您可能需要提供已排序的cmp函数来更改排序顺序。