2012-11-22 3 views
0

튜플의 특정 요소를 제거하는 방법은 무엇입니까? 예를 들어튜플의 특정 요소를 제거하는 방법은 무엇입니까?

:

 L={('a','b','c','d'):1,('a','b','c','e'):2} 

     remove='b' 

내가의 결과 싶어 :

 {('a','c','d'):1,('a','c','e'):2} 
+0

왜 그런 구조를 가지고 있는지 더 잘 이해할 수 있습니까? 와트는 하나의 요소를 제거한 후에도 2 개의 키가 같아 지나요? – Eduardo

답변

3
In [20]: L={('a','b','c','d'):1,('a','b','c','e'):2} 

In [21]: {tuple(y for y in x if y != "b"):L[x] for x in L} 
Out[21]: {('a', 'c', 'd'): 1, ('a', 'c', 'e'): 2} 

또는 filter() 사용이 :

In [24]: { tuple(filter(lambda y:y!="b",x)) : L[x] for x in L} 
Out[24]: {('a', 'c', 'd'): 1, ('a', 'c', 'e'): 2} 
+1

그러면 일부 키가 중복되어 렌더링되어 서로 겹쳐 쓸 수 있습니다. – Eduardo

+0

목록 내재가 필터보다 선호됩니다. – inspectorG4dget

+0

@ 에두아르도 네, 사전은 사전 작동 방식입니다. –

0

당신의 업데이트 된 버전을 만들 수를 사전 사전 이해 표현식을 사용하여 :

L = {('a', 'b', 'c', 'd'): 1, ('a', 'b', 'c', 'e'): 2, ('f', 'g', 'h'): 3} 

remove='b' 
L = {tuple(i for i in k if i != remove) if remove in k else k:v for (k,v) in L.items()} 

print L 

출력 : 당신이 그것을 볼 수 있듯이

{('a', 'c', 'e'): 2, ('a', 'c', 'd'): 1, ('f', 'g', 'h'): 3} 

은 혼자 자신의 튜플 키의 요소없이 항목을 떠난다.

관련 문제