在Python中按值对字典中的值进行排序

在Python中按值对字典中的值进行排序,python,arrays,sorting,dictionary,text,Python,Arrays,Sorting,Dictionary,Text,在Python中,我有类似的方法来计算文本中字符的频率,但我无法对字典“v”中的值进行排序 我尝试在这里搜索stackoverflow,但从未解决我的问题,输出的方面如下: {'a': 2, 'b': 4, 'e': 4, 'd': 36, 'g': 31, 'f': 37, 'i': 14, 'h': 4, 'k': 51, 'j': 31, 'l': 34, 'n': 18, 'q': 13, 'p': 2, 'r': 9, 'u': 1, 't': 1, 'w': 36, 'v': 15,

在Python中,我有类似的方法来计算文本中字符的频率,但我无法对字典“v”中的值进行排序

我尝试在这里搜索stackoverflow,但从未解决我的问题,输出的方面如下:

{'a': 2, 'b': 4, 'e': 4, 'd': 36, 'g': 31, 'f': 37, 'i': 14, 'h': 4, 'k': 51, 'j': 31, 'l': 34, 'n': 18, 'q': 13, 'p': 2, 'r': 9, 'u': 1, 't': 1, 'w': 36, 'v': 15, 'y': 14, 'x': 8, 'z': 10}

我想要按值排序,所以它不同于其他帖子。

python字典是一个无序的项目集合。因此,它无法排序。
尝试从
集合中查看
OrderedDict

如果您只想按顺序打印它们,只需打印
排序的输出即可:

abcedario='abcdefghijklmnopqrstvuxwyz'
v = {}
count = 0
for c in abcedario:
    count = 0
    for char in text:
        if c == char:
            count = count +1
            v[c] = count
print sorted(v.items(), key=lambda x:x[1])
对于
text=“helloworld”
您可以获得:

[('e', 1), ('d', 1), ('h', 1), ('r', 1), ('w', 1), ('o', 2), ('l', 3)]  
你们可以用柜台

from collections import Counter
text = "I have something like this in Python to count the frequency of characters in a text, but i can't sort the values on the dictionary"
print(Counter(text))
输出:

Counter({' ': 24, 't': 15, 'e': 11, 'n': 9, 'h': 8, 'i': 8, 'o': 8, 'a': 7, 'c': 6, 's': 5, 'r': 5, 'u': 4, 'y': 3, 'f': 2, 'l': 2, 'v': 2, "'": 1, 'q': 1, 'd': 1, 'I': 1, 'm': 1, 'g': 1, 'b': 1, 'x': 1, ',': 1, 'P': 1, 'k': 1})

更大的问题是,
sorted
返回一个新集合,而不是将@ZdaR
OrderedDict
的可能重复项排序到另一个集合?我不认为这是重复项,另一个问题是关于按键排序。顺便说一句,您的代码效率很低。对于
循环,你不需要有一对嵌套的
。那么,我如何在没有字典的情况下使用其他东西进行排序呢?我是python新手。你想让值按键排序吗?按值排序。但是我不想使用导入,上面的解决方案可以解决我的问题。就是这样!非常感谢你。
Counter({' ': 24, 't': 15, 'e': 11, 'n': 9, 'h': 8, 'i': 8, 'o': 8, 'a': 7, 'c': 6, 's': 5, 'r': 5, 'u': 4, 'y': 3, 'f': 2, 'l': 2, 'v': 2, "'": 1, 'q': 1, 'd': 1, 'I': 1, 'm': 1, 'g': 1, 'b': 1, 'x': 1, ',': 1, 'P': 1, 'k': 1})