Python 从字典中删除某个索引的项?
如果我有一本字典,它已经排序,我想按索引(不管初始字典的内容是什么)从中删除前三项(按值的顺序),我该怎么办?我该怎么做呢? 我希望它能让我只进行切片(比如一个列表),但我已经意识到这是不可能的 编辑:我指的是索引。例如,如果我从下面的排序字典的1到3中删除条目,在它按值排序后,我只剩下“鸡蛋”。 编辑2:我如何在这些地方找到关键点(在索引0、1、2中)? 编辑3:我不允许在此文件中导入或打印 例如:Python 从字典中删除某个索引的项?,python,dictionary,Python,Dictionary,如果我有一本字典,它已经排序,我想按索引(不管初始字典的内容是什么)从中删除前三项(按值的顺序),我该怎么办?我该怎么做呢? 我希望它能让我只进行切片(比如一个列表),但我已经意识到这是不可能的 编辑:我指的是索引。例如,如果我从下面的排序字典的1到3中删除条目,在它按值排序后,我只剩下“鸡蛋”。 编辑2:我如何在这些地方找到关键点(在索引0、1、2中)? 编辑3:我不允许在此文件中导入或打印 例如: >>>food = {"ham":12, "cookie":5, "eggs
>>>food = {"ham":12, "cookie":5, "eggs":16, "steak":2}
>>>remove_3(food)
{"eggs":16}
>>> from collections import OrderedDict
>>> from operator import itemgetter
>>> food = {"ham":12, "cookie":5, "eggs":16, "steak":2}
>>> my_ordered_dict = OrderedDict(sorted(food.items(), key=itemgetter(1)))
获取键值对(.items()
),按值对它们进行排序(项[1]
),并获取前3个([:3]
):
获取键值对(.items()
),按值对它们进行排序(项[1]
),并获取前3个([:3]
):
请尝试以下操作:
import operator
from collections import OrderedDict
food = {"ham": 12, "cookie": 5, "eggs": 16, "steak": 2}
ordered_dict = OrderedDict(sorted(food.items(), key=operator.itemgetter(1)))
for key in list(ordered_dict)[:3]:
del ordered_dict[key]
输出:
>>> ordered_dict
OrderedDict([('eggs', 16)])
请尝试以下操作:
import operator
from collections import OrderedDict
food = {"ham": 12, "cookie": 5, "eggs": 16, "steak": 2}
ordered_dict = OrderedDict(sorted(food.items(), key=operator.itemgetter(1)))
for key in list(ordered_dict)[:3]:
del ordered_dict[key]
输出:
>>> ordered_dict
OrderedDict([('eggs', 16)])
首先,关于你的声明: 如果我有一本字典,它已经分类了 Python中的dict在本质上是不有序的。因此,你不能维持秩序。如果要按排序顺序创建一个
dict
,请使用。例如:
>>>food = {"ham":12, "cookie":5, "eggs":16, "steak":2}
>>>remove_3(food)
{"eggs":16}
>>> from collections import OrderedDict
>>> from operator import itemgetter
>>> food = {"ham":12, "cookie":5, "eggs":16, "steak":2}
>>> my_ordered_dict = OrderedDict(sorted(food.items(), key=itemgetter(1)))
my\u ordered\u dict
所持有的值将为:
>>> my_ordered_dict
OrderedDict([('steak', 2), ('cookie', 5), ('ham', 12), ('eggs', 16)])
这相当于dict
将顺序保留为:
{
'steak': 2,
'cookie': 5,
'ham': 12,
'eggs': 16
}
为了转换dict
以排除具有前3个值的项,您必须对这些项进行切片(dict.items()
以(键,值)
的形式返回元组列表):
首先,关于你的声明: 如果我有一本字典,它已经分类了 Python中的dict在本质上是不有序的。因此,你不能维持秩序。如果要按排序顺序创建一个
dict
,请使用。例如:
>>>food = {"ham":12, "cookie":5, "eggs":16, "steak":2}
>>>remove_3(food)
{"eggs":16}
>>> from collections import OrderedDict
>>> from operator import itemgetter
>>> food = {"ham":12, "cookie":5, "eggs":16, "steak":2}
>>> my_ordered_dict = OrderedDict(sorted(food.items(), key=itemgetter(1)))
my\u ordered\u dict
所持有的值将为:
>>> my_ordered_dict
OrderedDict([('steak', 2), ('cookie', 5), ('ham', 12), ('eggs', 16)])
这相当于dict
将顺序保留为:
{
'steak': 2,
'cookie': 5,
'ham': 12,
'eggs': 16
}
为了转换dict
以排除具有前3个值的项,您必须对这些项进行切片(dict.items()
以(键,值)
的形式返回元组列表):
你所说的索引是什么意思?你指的是键吗?字典排序顺序不稳定(不同Python运行之间的变化)。您希望使用OrderedDict,它在添加键的顺序中提供稳定的排序顺序。字典没有排序,因此没有“前三个”项。因此,你必须找到删除自己的密钥。从概念上讲,用字典做这样的事情是错误的。你不能对字典进行排序。你们可以对一个包含的项目列表进行排序。你们所说的索引是什么意思?你指的是键吗?字典排序顺序不稳定(不同Python运行之间的变化)。您希望使用OrderedDict,它在添加键的顺序中提供稳定的排序顺序。字典没有排序,因此没有“前三个”项。因此,你必须找到删除自己的密钥。从概念上讲,用字典做这样的事情是错误的。你不能对字典进行排序。您可以对包含的项目列表进行排序。@AndyHayden
sorted
将创建一个与词典分开的具体列表。它仍然会给我一条错误消息:(我该怎么办?@KarolyHorvath它应该是O(1)时是O(n),如果我们使用的是更好的数据结构。@Jen它没有给我一个错误。它给了你什么错误?每次我尝试输入字典时,它都给我一个语法错误。@AndyHaydensorted
将创建一个与字典分开的具体列表。它仍然给我一个错误消息:(我该怎么做?@KarolyHorvath它是O(n)当它应该是O(1)时,如果我们使用了更好的数据结构。@Jen它没有给我一个错误。它给了你什么错误?每次我试图输入字典时,它都给我一个语法错误。