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

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

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函数就可以按照你的需求输出景区人气排行榜了。

修改后的完整代码如下,望采纳

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():
    def rank():
        # 将景区人气按照mark的大小排序,sorted函数返回的是一个新的排序后的列表a
        a = sorted(point, key=lambda p: int(p['mark']), reverse=True)
        # 循环遍历a,输出每个景区的id和mark
        for p in a:
            print(f"{p['id']}: {p['mark']}")
 
adminwork()