2016-12-02 31 views
0

我有点难倒在这里,并会喜欢一些帮助。删除字典中每个键的第一项

所以我有一个像这样

{'a':[1, 2, 3], 'b':[4, 5, 6]} 

一本字典,我需要创建一个函数,它会自动在每个列表/键删除的第一个项目,所以它应该成为

{'a':[2, 3], 'b':[5, 6]} 

我知道我应该使用弹出功能,但当有超过2个键和3个值的方式时,它会引起混淆

+0

那么之前我尝试了一些随机的东西,没有工作。但我只是想这样做,但我不知道它是否会工作,因为我只是想到它,还没有尝试过它 def delRow(self): for self._table: self._table [key] .pop() 哦对不起,我不太确定这里的格式化是如何工作的,我怎样才能让这看起来更好? –

+1

你不应该问你自己没有尝试和测试过的问题。如果你只花了5分钟时间思考并做一些研究,你就可以自己找到答案。 – Fallenreaper

+1

'd = {k:d [k] [1:] for k in d}'(假设'd'是一个字典对象) –

回答

0

您可以遍历字典的值并将它们弹出一个一次。如果您需要进一步的功能或控制,可以将其放置在一个功能中。

dict_ = {'a':[1, 2, 3], 'b':[4, 5, 6]} 

for val in dict_.values() 
    val.pop(0) 
0

你可以通过字典&拼接迭代列表。

var1 = {'a':[1, 2, 3], 'b':[4, 5, 6]} 

for element in var1: 
    var1[element] = var1[element][1:] 
6

您可以使用字典理解为:

>>> a = {'a':[1, 2, 3], 'b':[4, 5, 6]} 
>>> {k: a[k][1:] for k in a} 
{'a': [2, 3], 'b': [5, 6]} 
1

你可以使用该map内置函数lambda函数组合一个班轮实现这一目标。这种方法的另一个优点是,有没有涉及复制(如在切片溶液):

doc = {'a':[1, 2, 3], 'b':[4, 5, 6]} 
map(lambda v: v.pop(0), doc.values()) 

这在你的字典的每个值适用list.pop(0)

0

这里的另一种解决方案,

dict1={'a':[1, 2, 3], 'b':[4, 5, 6]} 

    for item in dict1.values(): 
     item.remove(item[0]) 

的for循环通过的值移动在词典由 'dict1.values()' 表示。这些值是一组列表,该列表的'.remove()'函数将删除给定元素的第一个匹配项,所以如果您给它列出的第一个元素,它同样会将其删除。

希望这有用!