hak*_*nen 3 python sorting dictionary list
今天是个好日子,
我在使用sorted()函数对dict中的百分比值进行排序时遇到了问题.当我得到负数时,它会排序最大的负数,然后是第二大的负数.我希望最小的负数首先出现.有没有办法修改我的sorted()来实现这个目的?干杯!
yoy_dict = sorted(yoy_dict.items(), key=lambda x: x[1], reverse = True)
yoy_dict = [('HOUGANG', '1.130759%'),
('JURONG EAST', '0.786807%'),
('PUNGGOL', '0.238738%'),
('SEMBAWANG', '-2.150383%'),
('WOODLANDS', '-2.043103%'),
('CHOA CHU KANG', '-1.923021%'),
('SENGKANG', '-1.548278%'),
('MARINE PARADE', '-1.445532%'),
('CENTRAL AREA', '-1.266556%'),
('JURONG WEST', '-1.037612%'),
('YISHUN', '-0.843832%'),
('BUKIT BATOK', '-0.296952%')]
Run Code Online (Sandbox Code Playgroud)
您需要将值转换float为避免排序字符串:
res = sorted(yoy_dict.items(), key=lambda x: float(x[1][:-1]), reverse=True)
Run Code Online (Sandbox Code Playgroud)
结果:
print(res)
[('HOUGANG', '1.130759%'),
('JURONG EAST', '0.786807%'),
('PUNGGOL', '0.238738%'),
('BUKIT BATOK', '-0.296952%'),
('YISHUN', '-0.843832%'),
('JURONG WEST', '-1.037612%'),
('CENTRAL AREA', '-1.266556%'),
('MARINE PARADE', '-1.445532%'),
('SENGKANG', '-1.548278%'),
('CHOA CHU KANG', '-1.923021%'),
('WOODLANDS', '-2.043103%'),
('SEMBAWANG', '-2.150383%')]
Run Code Online (Sandbox Code Playgroud)