根据我的阅读,字典是无序的'所以找不到基于位置的关键及其值是不可能的。是否有另一种方法可以执行此操作并返回相同的字典,而不使用键和键的值基于所选位置。 我想将变量设置为键的位置,以便用户可以选择要删除的键以及键值(可以是键名和值的两倍)。这个字典中的键和值是字符串,而不是整数,每次运行脚本时都会更改,因为我组合的两个字符串因用户输入而不同。
解决的例子: 收据= {'牛肉':'铸造'牛肉':'筹码''鸡肉':&# 39;芯片'}
答案 0 :(得分:1)
没有用于索引词典的直接API,但您可以列出键,按位置选择键,然后将其从词典中删除。
def remove_key(d, i):
'Mutate the dictionary to remove i-th key'
keys = d.keys()
del d[keys[i]]
return d
如果数据加倍,字典将消除重复数据,然后才能到达对。因此,数据需要存储为键/值对的列表而不是字典。这也将允许您按位置直接删除:
>>> receipt = [('beef', 'mint'), ('beef', 'chips'), ('chicken', 'chips')]
>>> del receipt[1]
>>> receipt
[('beef', 'mint'), ('chicken', 'chips')]
答案 1 :(得分:0)
您可以做的是,对键进行排序并使用该列表中键的索引来删除键中的键值。见下面的案例。即兴在您的计划中使用。
mydict = {'c':'qwe','a':'asd','b':'acb'}
for key in sorted(mydict.keys()):
print(key,":",mydict[key])
这将打印 -
a:asd
b:acb
c:qwe
答案 2 :(得分:-1)
您认为字典是什么:receipt = {'beef': 'mint', 'beef':'chips', 'chicken':'chips'}
不是字典,因为字典不能有多个具有相同键的值。
由于dicts不能使用相同的键具有多个值,因此根据位置删除值是没有意义的。