Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将词典的前n项复制到另一个词典中_Python - Fatal编程技术网

Python 将词典的前n项复制到另一个词典中

Python 将词典的前n项复制到另一个词典中,python,Python,这是一个简单的问题,但我无法用python编写代码。我想将前n项(假定为100项)即值和键复制到另一个空字典中。我会更清楚地描述这一点。我创建了一本词典,并使用OrderedDict对其进行排序。我的排序代码是: ordP=ORDERDEDDICT(反向(已排序(wcP.items(),key=lambda t:t[1])) 这是我得到的有序词典。这是按降序排列的。我的原始字典是wcP。我想把ordP的前100个值,即ordP的前100个最大值(根据键排序)放入一个新字典中 字典没有排序,但如果

这是一个简单的问题,但我无法用python编写代码。我想将前n项(假定为100项)即值和键复制到另一个空字典中。我会更清楚地描述这一点。我创建了一本词典,并使用OrderedDict对其进行排序。我的排序代码是:

ordP=ORDERDEDDICT(反向(已排序(wcP.items(),key=lambda t:t[1]))


这是我得到的有序词典。这是按降序排列的。我的原始字典是wcP。我想把ordP的前100个值,即ordP的前100个最大值(根据键排序)放入一个新字典中

字典没有排序,但如果您只想随机选择:

n = 100
assert len(d.keys()) >= n
dic100 = {k:v for k,v in list(d.items())[:n]}
new_values = dict(your_values.items()[:n])
或者,对于那些痴迷于懒惰的人:

import itertools
new_values = dict(itertools.islice(your_values.iteritems(), n))
如果要强制执行特定的排序,请定义一个接受键和值的键函数。人们通常使用lambdas,但没有理由不能使用完整的函数

def example_key_func((key, value)):
    return key * value

new_dict = dict(sorted(your_values.items(), key=example_key_func)[:n])

字典不是按顺序排列的,但如果您只需要随机选择:

new_values = dict(your_values.items()[:n])
或者,对于那些痴迷于懒惰的人:

import itertools
new_values = dict(itertools.islice(your_values.iteritems(), n))
如果要强制执行特定的排序,请定义一个接受键和值的键函数。人们通常使用lambdas,但没有理由不能使用完整的函数

def example_key_func((key, value)):
    return key * value

new_dict = dict(sorted(your_values.items(), key=example_key_func)[:n])

Python字典中的键没有排序。你想要100个随机的还是按某个东西排序后的前100个?我已经用OrderedDict对它们进行了排序。但是前100个没有1-100之间的键值。OrderedDict不会做您认为它会做的事情。它是根据插入点排序的,而不是键之间的比较方式。例如,它不是来自Java的
SortedMap
,Python字典中的键没有排序。你想要100个随机的还是按某个东西排序后的前100个?我已经用OrderedDict对它们进行了排序。但是前100个没有1-100之间的键值。OrderedDict不会做您认为它会做的事情。它是根据插入点排序的,而不是键之间的比较方式。例如,它不是来自Java的
SortedMap
。比我的答案好得多:)我试过了,但答案不是我想要的。而且它没有显示前100个值。我会尽量把我所做的事情讲清楚。我创建了一本词典,并使用OrderedDict对其进行排序。我对它进行排序的代码是:ordP=OrderedDict(reversed(sorted(wcP.items(),key=lambda t:t[1]),这里ordP是我得到的有序字典。这是按降序排列的。我的原始字典是wcP。我想把ordP的前100个值,即ordP的前100个最大值(根据键排序)放入一个新的dictionary@user3848891-如果你想澄清你的问题,请把它写下来,而不是把重要的细节隐藏在回答的评论中。答案比我的好得多:)我试过了,但答案不是我想要的。而且它没有显示前100个值。我会尽量把我所做的事情讲清楚。我创建了一本词典,并使用OrderedDict对其进行排序。我对它进行排序的代码是:ordP=OrderedDict(reversed(sorted(wcP.items(),key=lambda t:t[1]),这里ordP是我得到的有序字典。这是按降序排列的。我的原始字典是wcP。我想把ordP的前100个值,即ordP的前100个最大值(根据键排序)放入一个新的dictionary@user3848891-如果您想澄清您的问题,请将其删除,而不是将重要细节隐藏在答案的注释中。@user3848891选择jwilner的答案作为正确答案。它比我的好得多。@user3848891选择jwilner的答案作为正确答案。它比我的好多了。