Spicyrookie 2023-01-10 00:02 采纳率: 100%
浏览 14
已结题

Python数组按大小分行输出

景区人气排行榜

怎么把各景区人气按大小分行输出

p1={"id":'八达岭长城风景名胜区','kind':'fengjing','price':'75','region':'延庆区','mark':'502'}
p2={"id":'北京市奥林匹克公园','kind':'xiuxian','price':'45','region':'朝阳区','mark':'325'}
p3={"id":'恭王府','kind':'xiaofei','price':'128','region':'西城区','mark':'514'}
p4={"id":'故宫博物院','kind':'lishi','price':'75','region':'东城区','mark':'552'}
p5={"id":'慕田峪长城','kind':'fengjing','price':'45','region':'怀柔区','mark':'322'}
point=[p1,p2,p3,p4,p5]
def adminwork():
    over = "结束"
    print('==========Welcome! The Greatest Administrator===========')
    info='''
    ==========欢迎来到旅游推荐系统==========
         输入功能编号,你可以选择相应的功能:
         输入“1”:查看人气排行榜

========================================
    '''
    print(info)
    while True:
        code = input("请输入功能编号:")
        if code == "1":
            rank()
def rank():
    for p in point:
        Rank=[int(p['mark'])]
        a=sorted(Rank,reverse=True)
        print((p["id"]),(a))
adminwork()

输出结果未按照大小排序

我不太理解 a=sorted(Rank,reverse=True)为什么不起作用。我尝试用另一种方法for循环语句去逐一比较,但感觉工作量很大,且不知道如何在多个景区中相互比较并且输出最终排序结果。

我想让输出结果按照数字大小排序,输出的形式是景区的id+景区的mark

  • 写回答

2条回答 默认 最新

  • m0_54204465 2023-01-10 07:43
    关注

    可以这样改一下你的代码:

    def rank():
    # 将景区人气按照mark的大小排序,sorted函数返回的是一个新的排序后的列表,不会对原来的point列表造成影响
    sorted_points = sorted(point, key=lambda p: int(p['mark']), reverse=True)
    # 使用循环遍历排序后的列表,输出每个景区的id和mark
    for p in sorted_points:
    print(f"{p['id']}: {p['mark']}")
    
    adminwork()
    
    

    这样,rank函数就可以按照你的需求输出景区人气排行榜了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月18日
  • 已采纳回答 1月10日
  • 创建了问题 1月10日

悬赏问题

  • ¥15 怎样采集全国最新个体工商户数据
  • ¥20 我是一名大学生,想学习java是自学还是报培训班呢
  • ¥15 pycharm该如何爬取网易云歌曲下的评论?
  • ¥15 java调用sap webservice问题
  • ¥20 如何完全复现何恺明resnet论文里的结果,有代码吗,获得论文中的结果(如下图)
  • ¥15 mysql如果表行行数小于1000条还需要分区吗
  • ¥20 有关matlab自定义特殊算符的问题
  • ¥15 第15届蓝桥杯选拔赛斗鱼养殖场
  • ¥15 在vivado的FIFO使用中,FIFO有没有提供可以输出内部存储空间状态的端口?
  • ¥15 C++ QT内存数据匹配对比指导