按最小/最大值输出字典值

时间:2016-04-25 02:25:57

标签: python sorting python-3.x dictionary

假设我有一本字典:

dict1 = {'a': 3, 'b': 1.2, 'c': 1.6, 'd': 3.88, 'e': 0.72}

我需要能够通过最小值和最大值对它进行排序并使用此函数调用它们我仍在编写(注意:'occurences','avg_scores'和'std_dev'都是字典,'words'是字典的密钥。):

def sort(words, occurrences, avg_scores, std_dev):
    '''sorts and prints the output'''
    menu = menu_validate("You must choose one of the valid choices of 1, 2, 3, 4 \n        Sort Options\n    1. Sort by Avg Ascending\n    2. Sort by Avg Descending\n    3. Sort by Std Deviation Ascending\n    4. Sort by Std Deviation Descending", 1, 4)
    print ("{}{}{}{}\n{}".format("Word", "Occurence", "Avg. Score", "Std. Dev.", "="*51))
    if menu == 1:
        for i in range (len(word_list)):
            print ("{}{}{}{}".format(cnt_list.sorted[i],)

我确信我对自己的这种方式比必要更加困难,任何帮助都会受到赞赏。谢谢!

3 个答案:

答案 0 :(得分:1)

您可以根据相关值对键进行排序。例如:

>>> dict1 = {'a': 3, 'b': 1.2, 'c': 1.6, 'd': 3.88, 'e': 0.72}
>>> for k in sorted(dict1, key=dict1.get):
...   print k, dict1[k]
...
e 0.72
b 1.2
c 1.6
a 3
d 3.88    

答案 1 :(得分:1)

使用密钥:{/ p>使用minmax

dict1 = {'a': 3, 'b': 1.2, 'c': 1.6, 'd': 3.88, 'e': 0.72}

min_v = min(dict1.items(), key=lambda x: x[1])
max_v = max(dict1.items(), key=lambda x: x[1])

print min_v, max_v

答案 2 :(得分:0)

你不能对dict进行排序,只能表示它。 但是,您可以使用ordereddict代替。

from collections import OrderedDict

dictionnary = OrderedDict(
    sorted(
        {'a': 3, 'b': 1.2, 'c': 1.6, 'd': 3.88, 'e': 0.72
         }.items(), key=lambda x:x[1], reverse=True))