从字典创建 "top list"
Creating a "top list" from dictionary
我有字典,比如:
x = {"John":15,"Josh":2,"Emily":50,"Joey":12}
我需要创建这样的东西:
- Emily - 50
- John - 15
- Joey - 12
- Josh - 2
最好的方法是什么?我已经尝试过以某种方式对字典进行排序,但随后它转换为列表并且我无法获得两个值(名称和数字)。
按字典值简单排序:
x = {"John":15, "Josh":2, "Emily":50, "Joey":12}
for i, t in enumerate(sorted(x.items(), key=lambda x: x[1], reverse=True), 1):
print('{}. {} - {}'.format(i, t[0], t[1]))
输出:
1. Emily - 50
2. John - 15
3. Joey - 12
4. Josh - 2
在这里查看答案:How do I sort a dictionary by value?
在您的情况下,您需要反转 sorted_x,因为您首先需要更高的值,因此:
import operator
x = {"John":15,"Josh":2,"Emily":50,"Joey":12}
sorted_x = sorted(x.items(), key=operator.itemgetter(1), reverse=True)
一个简单的方法:
x = {"John":15,"Josh":2,"Emily":50,"Joey":12}
val = sorted([y for y in x.values()])
name = val[:]
for key in x.keys():
id = val.index(x[key])
name[id] = key
我有字典,比如:
x = {"John":15,"Josh":2,"Emily":50,"Joey":12}
我需要创建这样的东西:
- Emily - 50
- John - 15
- Joey - 12
- Josh - 2
最好的方法是什么?我已经尝试过以某种方式对字典进行排序,但随后它转换为列表并且我无法获得两个值(名称和数字)。
按字典值简单排序:
x = {"John":15, "Josh":2, "Emily":50, "Joey":12}
for i, t in enumerate(sorted(x.items(), key=lambda x: x[1], reverse=True), 1):
print('{}. {} - {}'.format(i, t[0], t[1]))
输出:
1. Emily - 50
2. John - 15
3. Joey - 12
4. Josh - 2
在这里查看答案:How do I sort a dictionary by value?
在您的情况下,您需要反转 sorted_x,因为您首先需要更高的值,因此:
import operator
x = {"John":15,"Josh":2,"Emily":50,"Joey":12}
sorted_x = sorted(x.items(), key=operator.itemgetter(1), reverse=True)
一个简单的方法:
x = {"John":15,"Josh":2,"Emily":50,"Joey":12}
val = sorted([y for y in x.values()])
name = val[:]
for key in x.keys():
id = val.index(x[key])
name[id] = key