python处理字典之表格-城市排行榜

# 中国城市排行榜
import xlrd
book=xlrd.open_workbook('city_data.xls')
sheet=book.sheet_by_index(0)
main_data_list=[]
for row in range(3,sheet.nrows):
    temp_dict={}
    # print(sheet.row_values(row))
    temp_dict["城市"]=sheet.row_values(row)[0]
    temp_dict["2019GDP"] = sheet.row_values(row)[1]
    temp_dict["2018总人口"] = sheet.row_values(row)[2]
    temp_dict["2018平均房价"] = sheet.row_values(row)[3]
    temp_dict["2018平均工资"] = sheet.row_values(row)[4]
    temp_dict["地铁总里程"] = sheet.row_values(row)[5]
    temp_dict["高效数量"] = sheet.row_values(row)[6]
    temp_dict["三甲医院"] = sheet.row_values(row)[7]
    temp_dict["小学数量"] = sheet.row_values(row)[8]
    main_data_list.append(temp_dict)
    # print(main_data_dic)
for i_list in range(len(main_data_list)):
    main_data_list[i_list]['原榜单得分']=len(main_data_list)-i_list
print("城市原榜得分从高到低:")
for j_list in range(len(main_data_list)):
    print(main_data_list[j_list]["城市"],main_data_list[j_list]['原榜单得分'])
print('='*80)

for i in range(len(main_data_list)):
    main_data_list[i]['收入房价比']=format(main_data_list[i]['2018平均工资']/12/main_data_list[i]['2018平均房价'],'.2f')
print(main_data_list)

#从字典中取出K这个key的值函数
def get_value(dic,k):
    return dic.get(k)

def desc_cities(cities_list,kw="2019GDP"):
    if kw!="2018平均房价":
        cities_bykey=sorted(cities_list,key=lambda x:get_value(x,kw),reverse=True)
        for i_key in range(len(cities_bykey)):
            cities_bykey[i_key][kw+"得分"]=len(cities_bykey)-i_key
        print(cities_bykey)
        print(f'城市{kw}得分(由高到低):')
        for j_key in range(len(cities_bykey)):
            print(cities_bykey[j_key]["城市"],cities_bykey[j_key][kw+"得分"])
        print('='*80)
    else:
        cities_bykey = sorted(cities_list, key=lambda x: get_value(x, kw), reverse=True)
        for i_house in range(len(cities_bykey)):
            cities_bykey[i_house][kw+"得分"]=i_house+1
        print(f'城市{kw}得分(由低到高):')
        for j_house in range(len(cities_bykey)):
            print(cities_bykey[j_house]["城市"],cities_bykey[j_house][kw+"得分"])
        print('='*80)
    return cities_bykey
desc_cities(main_data_list,kw="2018平均房价")

结果如下:

城市原榜得分从高到低:
北京 10
上海 9
深圳 8
广州 7
成都 6
重庆 5
杭州 4
武汉 3
西安 2
天津 1
================================================================================
[{'城市': '北京', '2019GDP': 35371.28, '2018总人口': 1375.8, '2018平均房价': 37420.19, '2018平均工资': 145766.0, '地铁总里程': 699.3, '高效数量': 116.0, '三甲医院': 78.0, '小学数量': 91.3, '原榜单得分': 10, '收入房价比': '0.32'}, {'城市': '上海', '2019GDP': 38155.32, '2018总人口': 1462.38, '2018平均房价': 28981.11, '2018平均工资': 140400.0, '地铁总里程': 705.0, '高效数量': 78.0, '三甲医院': 66.0, '小学数量': 80.02, '原榜单得分': 9, '收入房价比': '0.40'}, {'城市': '深圳', '2019GDP': 26927.09, '2018总人口': 454.7, '2018平均房价': 55441.01, '2018平均工资': 111709.0, '地铁总里程': 303.4, '高效数量': 8.0, '三甲医院': 16.0, '小学数量': 102.8, '原榜单得分': 8, '收入房价比': '0.17'}, {'城市': '广州', '2019GDP': 23628.6, '2018总人口': 927.69, '2018平均房价': 21581.78, '2018平均工资': 111839.0, '地铁总里程': 513.0, '高效数量': 91.0, '三甲医院': 62.0, '小学数量': 105.85, '原榜单得分': 7, '收入房价比': '0.43'}, {'城市': '成都', '2019GDP': 17012.65, '2018总人口': 1476.05, '2018平均房价': 9783.16, '2018平均工资': 88011.0, '地铁总里程': 302.285, '高效数量': 68.0, '三甲医院': 29.0, '小学数量': 94.2, '原榜单得分': 6, '收入房价比': '0.75'}, {'城市': '重庆', '2019GDP': 23605.77, '2018总人口': 1962.66, '2018平均房价': 8189.98, '2018平均工资': 78928.0, '地铁总里程': 313.6, '高效数量': 69.0, '三甲医院': 27.0, '小学数量': 126.15, '原榜单得分': 5, '收入房价比': '0.80'}, {'城市': '杭州', '2019GDP': 15373.0, '2018总人口': 774.1, '2018平均房价': 24360.2, '2018平均工资': 106709.0, '地铁总里程': 135.36, '高效数量': 46.0, '三甲医院': 20.0, '小学数量': 59.1, '原榜单得分': 4, '收入房价比': '0.37'}, {'城市': '武汉', '2019GDP': 17157.0, '2018总人口': 883.73, '2018平均房价': 12678.48, '2018平均工资': 88327.0, '地铁总里程': 339.0, '高效数量': 90.0, '三甲医院': 36.0, '小学数量': 57.9, '原榜单得分': 3, '收入房价比': '0.58'}, {'城市': '西安', '2019GDP': 9321.19, '2018总人口': 986.87, '2018平均房价': 9984.54, '2018平均工资': 87125.0, '地铁总里程': 155.66, '高效数量': 75.0, '三甲医院': 41.0, '小学数量': 73.09, '原榜单得分': 2, '收入房价比': '0.73'}, {'城市': '天津', '2019GDP': 14104.28, '2018总人口': 1081.63, '2018平均房价': 15924.26, '2018平均工资': 100731.0, '地铁总里程': 233.0, '高效数量': 71.0, '三甲医院': 49.0, '小学数量': 67.32, '原榜单得分': 1, '收入房价比': '0.53'}]
城市2018平均房价得分(由低到高):
深圳 1
北京 2
上海 3
杭州 4
广州 5
天津 6
武汉 7
西安 8
成都 9
重庆 10
================================================================================

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ISDF-工软未来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值