2016-12-02 30 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()'函數將刪除給定元素的第一個匹配項,所以如果您給它列出的第一個元素,它同樣會將其刪除。

希望這有用!