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