python - 按计数值对字典进行排序

标签 python dictionary

我试图按第三列对字典的输出进行排序,或者更具体地说,按示例结果中出现的值的计数进行排序。对于上下文,提供的原始答案在这里:https://stackoverflow.com/a/23199901/666891 。我无法从 https://stackoverflow.com/a/73050/666891 得到答案或https://stackoverflow.com/a/613218/666891所以我在这里问。

原始输出来自:

for k in ret.keys():
    print '%s %d' % (k,ret[k])

结果是:

google com 1132
akamaiedge net 378
bing com 381
microsoft com 197

并尝试过:

x = ret.keys()
sorted(x,key=operator.itemgetter(3))
for k in x:
    print '%s %d' % (k,ret[k])

结果是:

google com 1132
akamaiedge net 378
bing com 381
microsoft com 197

最后尝试:

for k in sorted(ret.keys(),key=operator.itemgetter(3),reverse=True):
    print '%s %d' % (k,ret[k])

这导致了与第一个类似的输出:

microsoft com 197
akamaiedge net 378
google com 1132
bing com 381

此外,ret.keys()的值为:

['google com', 'akamaiedge net', 'bing com', 'microsoft com']

针对我的具体场景的解决方案是:

for k in sorted(ret.keys(), key=lambda k:ret[k], reverse=True):
    print "{:15} - {}".format(k, ret[k])

最佳答案

如果您尝试根据值进行排序,则 key 参数应该获取一个函数,该函数可以给出与当前键对应的值,如下所示

d = {'google com':1132,'akamaiedge net':378,'bing com':381,'microsoft com':197}
for key in sorted(d, key=d.get):
    print "{:15} - {}".format(key, d[key])

输出

microsoft com   - 197
akamaiedge net  - 378
bing com        - 381
google com      - 1132

现在,每当排序算法在字典中选取一个键时,它就会调用key函数,该函数是字典的getter函数,它将给出与该键对应的值。因此,将使用该键对应的值进行比较。

注1:最后一个代码的问题是,您正在使用operator.itemgetter(3),它将获取键中索引3处的元素。您的键是字符串,因此键中的第四个字符将用于比较。这就是为什么你的问题中的最后一个例子显示

mic*r*osoft com 197
aka*m*aiedge net 378
goo*g*le com 1132
bin*g* com 381

按字母顺序r > m > g

注释 2: 第二个示例的问题是,sorted 不会更改 x,它返回一个新列表。因此,您仍然仅使用未排序的 x

关于python - 按计数值对字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23691899/

相关文章:

python - 在 Python 中序列化函数的源代码

python - Tensorflow 的多边形边界框

python - 分配增量文件名

c++ - 通过迭代器为映射成员赋值

python - 使用 pandas.Series.str.get : what is the correct way?

python - 如何使用python替换两个或多个下划线?

python - 如何在不使用模块的情况下根据单词的第一个字符拆分列表并将它们放入字典中?

c# - 自定义类作为 C# 中字典的键不起作用

python - 从 {index : list of row values} 形式的字典构造 Pandas DataFrame

xslt - 使用 XSLT 翻译 XML 文件