如何访问字典值并删除它们?

时间:2019-03-27 23:51:30

标签: python python-3.x dictionary

我有一个带有键和值(列表)的Python字典stuffs

{'car':['bmw','porsche','benz'] 'fruits':['banana','apple']}

我想从汽车中删除第一个值:bmw,从水果中删除第一个值:banana

请问如何访问和删除它们?我已经尝试过.pop(index),但是没有用...

3 个答案:

答案 0 :(得分:4)

您可以创建一个新字典,在其中使用[1:]

跳过第一个元素
stuffs = {'car':['bmw','porsche','benz'], 'fruits':['banana','apple']}
stuffs_new = {k:v[1:] for k,v in stuffs.items()}
# {'car': ['porsche', 'benz'], 'fruits': ['apple']}

答案 1 :(得分:1)

一种简单的方法是使用for循环并循环访问字典中的每个项目,然后弹出第一个元素:

dictionary = {'car':['bmw','porsche','benz'], 'fruits':['banana','apple']}
for key in dictionary:
    dictionary[key].pop(0)

或者,作为列表理解

dictionary = {'car':['bmw','porsche','benz'], 'fruits':['banana','apple']}
[dictionary[i].pop(0) for i in dictionary]

这些代码段在每个键('car''fruits')上引用字典,然后继续在这些键索引的值上使用pop

编辑:

如果您不打算存储列表,请不要使用列表推导。如果要遍历较大的值,则由于存储了大量无用的值,可能会导致内存错误。例如在这种情况下:

[print(i) for i in range(9823498)]

这将存储9823498 None个值*,而for循环则不会。但仍然可以达到相同的目的。

答案 2 :(得分:0)

你快到了。

使用以下任一方法:

del dict[key]

dict.pop(key, value)

第二个将删除,但也保留该项目作为退货