print(len(list(dics[0].keys())))\nprint(len(list(dics[1].keys())))\nprint(len(list(dics[2].keys())))\nprint(len(list(dics[3].keys())))\n\n# 筛选出90分以上的酒店\nhotels_90 = {k: v for k, v in dics[0].items()}\n\n# 筛选出80-90分的酒店\nhotels_80to90 = {k: v for k, v in dics[1].items() if k not in dics[0]}\n\n# 筛选出70-80分的酒店\nhotels_70to80 = {k: v for k, v in dics[2].items() if k not in dics[1]}\n\n# 筛选出60-70分的酒店\nhotels_60to70 = {k: v for k, v in dics[3].items() if k not in dics[2]}\n\n# 打印筛选结果\nprint("90分以上的酒店数量:", len(list(hotels_90.keys())))\nprint("80-90分的酒店数量:", len(list(hotels_80to90.keys())))\nprint("70-80分的酒店数量:", len(list(hotels_70to80.keys())))\nprint("60-70分的酒店数量:",len(list(hotels_60to70.keys())))\n为什么开始打印的是59、226、316、333,最后打印的是90分以上的酒店数量: 59\n80-90分的酒店数量: 171\n70-80分的酒店数量: 98\n60-70分的酒店数量: 24,为什么呢,问题出在哪\n内容:问题出在筛选条件的逻辑上。在筛选80-90分和70-80分酒店时,应当排除掉已经被筛选出的90分以上酒店。修改代码如下:\n\npython\n# 筛选出80-90分的酒店\nhotels_80to90 = {k: v for k, v in dics[1].items() if k not in hotels_90}\n\n# 筛选出70-80分的酒店\nhotels_70to80 = {k: v for k, v in dics[2].items() if k not in hotels_90 and k not in hotels_80to90}\n\n\n同理,筛选60-70分酒店时也需要排除已经被筛选出的酒店。修改代码如下:\n\npython\n# 筛选出60-70分的酒店\nhotels_60to70 = {k: v for k, v in dics[3].items() if k not in hotels_90 and k not in hotels_80to90 and k not in hotels_70to80}\n\n\n这样修改后再打印筛选结果就应该是正确的了。

Python 酒店评分筛选问题解决:如何正确统计不同评分范围酒店数量

原文地址: https://www.cveoy.top/t/topic/pniW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录