2016-12-02 1 views
0

나는 여기 저기 난처한 상황에 처하게되어 도움이 될 것입니다.사전의 각 키에있는 첫 번째 항목 삭제

그래서 나는 그렇게

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

같은 사전을하고 난 자동으로 각 목록/키의 첫 번째 항목을 삭제하는 함수를 작성해야합니다, 그래서

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

I가되어야 pop 함수를 사용해야한다는 것을 알았지 만 2 가지 이상의 키와 3 가지 값이있을 때 혼란스러워진다.

+0

이전에는 잘 작동하지 않는 몇 가지 무언가를 시도했습니다. 하지만 난 그냥 이런 식으로 생각하고 있지만, 난 그냥 생각하고 그것을 시도하지 않은 이후로 작동하는지 확실하지 않다 def delRow (자기) : 에 대한 키를 self._table : self._table [key] .pop() 아, 미안하지만 형식이 어떻게 작동하는지 잘 모르겠지만 어떻게하면 좋을까요? –

+1

당신은 시도하지 않고 스스로 시험 한 질문을해서는 안됩니다. 5 분 정도만 생각하고 연구 해보면 스스로 답을 얻을 수있었습니다. – Fallenreaper

+1

'd = {k : d의 k에 대한 d [k] [1 :] ('d는 dict 객체라고 가정) –

답변

0

사전의 값을 반복하여 하나씩 튀길 수있다. 한 번에. 추가 기능이나 제어가 필요하면 함수에 배치 할 수 있습니다.

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

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

당신은 DICT & 스플 라이스를 통해 목록을 반복 할 수 있습니다.

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

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

당신은 그것을 위해 사전-이해를 사용할 수 있습니다 : 당신은 람다 함수와 결합 된 map 내장 함수를 사용하여 한 줄에이를 수

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

. 이 방법의 또 다른 장점은 반군 복사 (슬라이싱 솔루션 등)가 없습니다 것입니다 :

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

이것은 당신의 DICT의 각 값에 list.pop(0)을 적용합니다.

0

은 여기 dict1.values ​​() '로 표시되는 사전에있는 값을 통하여

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

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

용 루프 이동, 다른 해결책이다. 값은 목록 집합이며 목록의 '.remove()'함수는 주어진 요소의 첫 번째 항목을 제거하므로 목록에있는 첫 번째 요소를 제공하면 제거됩니다.

희망이 유용했습니다!

관련 문제