我有一个按值排序的有序字典(OrderedDict
)。如何获取最上面的(比如说25个)键值并将它们添加到新字典中?
例如:我有这样的东西:
dictionary={'a':10,'b':20,'c':30,'d':5}
ordered=OrderedDict(sorted(dictionary.items(), key=lambda x: x[1],reverse=True))
现在ordered
是一个有序字典,我想创建一个字典,比如通过获取前两个最频繁的项及其键:
frequent={'c':30,'b':20}
只需使用(反向)有序字典中的前N个项(键对)创建一个新字典。例如,要获得前三项,可以执行以下操作:
对于Python 3,可以使用
dict(list(ordered.items())[:3])
,因为items()
返回该版本中的迭代器。或者您可以使用dict(itertools.islice(ordered.items(), 3))
,它在Python 2和3中都可以工作。还要注意,结果只是一个常规字典,正如您在问题中指定的那样,而不是
collections.Counter
或其他类型的映射。这种方法非常通用,不需要原始的dictionary
具有整数值,只需要对事物进行排序(即通过key
函数进行比较)。^{} 的主要目的是保持元素插入的顺序
这里需要的是^{} ,它内置了n个最常见的功能:
您是否尝试过从排序的元组列表中建立索引,以获取第n个最频繁的项及其键? 例如,如果您需要前两个最常见的项目,您可以
相关问题 更多 >
编程相关推荐