Python 从字典中删除某个索引的项?

Python 从字典中删除某个索引的项?,python,dictionary,Python,Dictionary,如果我有一本字典,它已经排序,我想按索引(不管初始字典的内容是什么)从中删除前三项(按值的顺序),我该怎么办?我该怎么做呢? 我希望它能让我只进行切片(比如一个列表),但我已经意识到这是不可能的 编辑:我指的是索引。例如,如果我从下面的排序字典的1到3中删除条目,在它按值排序后,我只剩下“鸡蛋”。 编辑2:我如何在这些地方找到关键点(在索引0、1、2中)? 编辑3:我不允许在此文件中导入或打印 例如: >>>food = {"ham":12, "cookie":5, "eggs

如果我有一本字典,它已经排序,我想按索引(不管初始字典的内容是什么)从中删除前三项(按值的顺序),我该怎么办?我该怎么做呢? 我希望它能让我只进行切片(比如一个列表),但我已经意识到这是不可能的

编辑:我指的是索引。例如,如果我从下面的排序字典的1到3中删除条目,在它按值排序后,我只剩下“鸡蛋”。 编辑2:我如何在这些地方找到关键点(在索引0、1、2中)? 编辑3:我不允许在此文件中导入或打印

例如:

>>>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它没有给我一个错误。它给了你什么错误?每次我尝试输入字典时,它都给我一个语法错误。@AndyHayden
sorted
将创建一个与字典分开的具体列表。它仍然给我一个错误消息:(我该怎么做?@KarolyHorvath它是O(n)当它应该是O(1)时,如果我们使用了更好的数据结构。@Jen它没有给我一个错误。它给了你什么错误?每次我试图输入字典时,它都给我一个语法错误。