繁体   English   中英

有没有可能使用 Python 字典中的 position 删除项目的方法?

[英]Is there a possible way to delete an item using position in the dictionary in Python?

所以我遇到了这个问题。 假设我有一本字典,我想在不知道该项的键名的情况下删除最后一项。 我该怎么做?

你像这样弹出最后一个项目:

dictionary = {'a': 2, 'd': 3}
last_key = list(dictionary)[-1]
dictionary.pop(last_key)
print(dictionary)

Output

{'a': 2}

从 Python3.7 开始,dicts 保持键的顺序。 因此, list(dictionary)表示键的插入顺序

你可能会使用popitem()

(来自 Python 3.5+ 用于 OrderedDict,3.7+ 用于所有字典)

d = {'a':1, 'b':2,'c':3}

d.popitem() # ('c',3)

print(d)

{'a': 1, 'b': 2}

popitem() 的工作方式类似于 LIFO 队列(堆栈),因此它会删除最后添加的键。 要删除第一项,您可以使用 popitem(False),它的工作原理类似于 FIFO 队列。

要删除其他一些任意 position,可以使用itertools.islice来帮助:

from itertools import islice

d = {'a':1, 'b':2,'c':3,'d':4,'e':5}

del d[next(islice(d,2,None))]  # delete at index 2

print(d)

{'a': 1, 'b': 2, 'd': 4, 'e': 5}

这仍然需要按顺序运行键,但至少它不会创建中间数据结构(列表)来这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM