想问下python字典排序 怎么才能先按照值大小降序排列 若值相同 再按照键的字母顺序排呢? 英语
网友回答
【答案】 暂时只能想到这样的,结果是排序后的键列表.
d = {'a':3,'c':4,'b':3,'d':2,'f':4,'e':2}
result = []
keys = sorted(d,key=lambda k:d[k])
for k in keys:
if not result:
result.append(k)
elif d[k] == d[result[-1]] and k 追问: 谢谢楼上 不过当值相同的元素很多的时候好像不行吧 因为每次都只比较了result里面的最后一位 追答: 好像有这个风险。下面用了一种丑陋的做法。 d = {'x': 3, 'c': 4, 'b': 3, 'd': 2, 'f': 4, 'e': 2, 'k': 3} temp = {} for k, v in d.items(): if unicode(v) not in temp: temp[unicode(v)] = [v, k] continue temp[unicode(v)].append(k) keys = sorted(temp, key=lambda k: temp[k][0]) data = [] for k in keys: data.extend(sorted(temp[k][1:])) print data