【发布时间】:2016-01-07 12:18:47
【问题描述】:
我在 Python 中有这样的东西来计算文本中字符的频率,但我无法对字典“v”上的值进行排序。
abcedario='abcdefghijklmnopqrstvuxwyz'
v = {}
count = 0
for c in abcedario:
count = 0
for char in text:
if c == char:
count = count +1
v[c] = count
sorted(v.items(), key=lambda x:x[1])
print 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}
我想按值排序,所以它与其他帖子不同。
【问题讨论】:
-
更大的问题是
sorted返回一个新集合而不是就地排序 -
@ZdaR
OrderedDict,大概? -
我不认为这是重复的,另一个问题是关于按键排序。
-
顺便说一句,您的代码非常效率低下。您不需要有一对嵌套的
for循环。
标签: python arrays sorting dictionary text