景区人气排行榜
怎么把各景区人气按大小分行输出
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()