2016-12-02 11 views
0

私はここでうんざりしていて、助けが大好きです。辞書の各キーの最初の項目を削除します

だから私はそう

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

のように辞書を持っていると私はそれが私

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

になる必要がありますので、自動的に、各リスト/キーの最初の項目を削除する関数を作成する必要があります私はポップ関数を使うべきだと知っていますが、2つ以上のキーと3つの値があると混乱します

+0

まあ、私は動作しなかったランダムなものを試しました。しかし、私はちょうどこれのように考えていたが、私はそれを考えていてまだ試していないので、うまくいくかどうか分からない。 def delRow(self): for key in self._table: self._table [key] .pop() ああ、申し訳ありませんが、ここでどのように書式設定が機能するかはあまりよく分かりません。 –

+1

あなたは試してみることはできません。あなたはそれについて考えるためにちょうど5分かかった場合、あなた自身が答えに来て、研究をすることができました。 – Fallenreaper

+1

'd = {k:d [k] [1:] for d}}(' d'はdictオブジェクトだとします) –

答えて

0

辞書の値をループして1つをポップすることができます一度に。さらに機能や制御が必要な場合は、それを関数に配置することができます。

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組み込み関数を使用してワンライナーでこれを達成することができました。このアプローチの別の利点は、(スライシング溶液中のように)関与なしコピーはありませんということです。

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

これはあなたの辞書の各値にlist.pop(0)が適用されます。ここ

0

は、forループ別の溶液、

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

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

ザ 'はdict1.values()' で表される辞書内の値を移動です​​。値はリストの集合であり、リストの '.remove()'関数は与えられた要素の最初の出現を削除するので、リストにある最初の要素を削除すると同様に削除されます。

これは役に立ちましたか?

関連する問題