Python 如何根据键的位置从字典中删除键及其值

Python 如何根据键的位置从字典中删除键及其值,python,dictionary,Python,Dictionary,据我所知,字典是“无序的”,因此不可能根据位置查找键及其值。是否有另一种方法可以执行此操作,并根据所选位置返回不带键和键值的同一词典。 我想将一个变量设置为键的位置,以便用户可以选择要删除的键以及该键的值(可以是键名和值的两倍)。此字典中的键和值是字符串,而不是整数,每次运行脚本时都会更改,因为我组合的两个字符串根据用户输入的不同而不同 要完成的示例: 收据={'beef':'mint','beef':'chips','chicken':'chips'}如何按位置移除钥匙 没有用于索引字典的直接

据我所知,字典是“无序的”,因此不可能根据位置查找键及其值。是否有另一种方法可以执行此操作,并根据所选位置返回不带键和键值的同一词典。 我想将一个变量设置为键的位置,以便用户可以选择要删除的键以及该键的值(可以是键名和值的两倍)。此字典中的键和值是字符串,而不是整数,每次运行脚本时都会更改,因为我组合的两个字符串根据用户输入的不同而不同

要完成的示例: 收据={'beef':'mint','beef':'chips','chicken':'chips'}

如何按位置移除钥匙 没有用于索引字典的直接API,但您可以列出键,按位置选择键,然后将其从字典中删除

def remove_key(d, i):
    'Mutate the dictionary to remove i-th key'
    keys = d.keys()
    del d[keys[i]]
    return d
“双重ups”的具体案例 如果您的数据是双倍的,那么字典将在您找到数据对之前消除重复项。因此,数据需要存储为键/值对列表,而不是字典。这也将允许您直接按职位删除:

>>> receipt = [('beef', 'mint'), ('beef', 'chips'), ('chicken', 'chips')]
>>> del receipt[1]
>>> receipt
[('beef', 'mint'), ('chicken', 'chips')]

你认为是字典:
receipt={'beef':'mint','beef':'chips','chicken':'chips'}
不是字典,因为字典不能有多个相同键的值


由于dict不能有多个具有相同键的值,因此根据位置删除值是没有意义的。

您可以做的是,对键进行排序,并使用该列表中键的索引从dict中删除键、值。请参见下面的案例。在你的程序中即兴使用

mydict = {'c':'qwe','a':'asd','b':'acb'}
for key in sorted(mydict.keys()):
    print(key,":",mydict[key])
这会打印出来-

a:asd
b:acb
c:qwe

如果您知道dict是无序的,为什么要尝试根据索引删除?还有
收藏。OrderedDict
但我认为这是一个XY问题。您也不能有重复的键。
{'beef':'mint','beef':'chips','chicken':'chips'}
不是字典,因为beef有两次,所以它将覆盖beefs值