2014-01-23 4 views
0

사용자가 사전 (또는 단수) 목록에서 문자열 키 항목을 제거 할 수 있도록하는 가장 좋은 방법은 무엇입니까?사전에서 키를 제거하는 사용자 목록

지금까지 내가 여기있는 곳입니다.

내 사전에서 값을 제거합니다 (사전은 생성 될 수 있으므로 변경 될 수 있음).

d = {'Seven': 22, 'Six': 0, 'Three': 35, 'Two': 0, 'Four': 45, 'Five': 34, 'Eight': 0} 

1) 그래서 어떻게하면 첫 번째 쿼리가 입력됩니까? 이것은 내 시도 였지만 실패했습니다.

>>> s = raw_input('1 2 3 4') 
1 2 3 4 
>>> numbers = map(str, s.split()) 
>>> numbers 
[] 

>>> s = raw_input('1 2 3 4') 
1 2 3 4 
>>> numbers = map(int, s.split()) 
>>> numbers 
[] 

2) int를 단어 형식으로 변환하는 방법은 무엇입니까? 범위가 제한되어 있으므로 사전당 20 개를 초과 할 수 없습니다. 그래서 처음 생각은 정보를 해석 할 수있는 종류의 키를 만드는 것이 었습니다.

e = {'One': 1, 'Two': 2, 'Three': 3, 'Four': 4} 

이 작업은 예상대로 작동하지 않으며 하나의 항목 만 제거합니다.

>>> e = {'One': 1, 'Two': 2, 'Three': 3, 'Four': 4} 
>>> {k:v for k,v in e.items() if v!=(1 and 3)} 
{'Four': 4, 'Two': 2, 'One': 1} 

제 의도는 d가 아닌 e에서 값을 제거하는 것입니다. 사용자가 입력 할 항목이 얼마나 많은지 모르므로 실용적이지 않으므로 '및'문을 사용하는 것이 잘못되었습니다.

답변

2

먼저 raw_input의 매개 변수는 표시하기위한 것입니다. 당신은 스스로를 입력해야합니다

>>> s = raw_input("Enter a sequence of number: ") 
Enter a sequence of number: 1 2 3 4 
>>> print s 
1 2 3 4 

을 지금, 당신은 단지 그것을 매핑 목록을 사용할 수 있습니다

m = ['1':'One', '2':'Two', '3':'Three', .., '10':'Ten'] 

편집는 여기를 변환하는 방법입니다 :

e = [v for k, v in m.items() if k in s] 

셋째, 사전 보 완성 (또는 일반적으로 '이해')은 기존 대상을 수정하는 것이 아니라 새 대상을 만드는 것입니다. 당신이 얻을 수있는 가장 가까운 방법은 사용자 입력의 전자로 변환 않았다 그것은 필터 같은 역할을 확인하고 다시 d

d = {k:v for k, v in d.items() if k not in e} 
+0

에 결과를 재 할당하는 것입니다? – sayth

+0

@sayth 몇 가지 변경 사항으로 내 대답을 업데이트했습니다. – aIKid

+0

뭔가가 작동하지 않는 것 같습니다 >>> s = raw_input ("숫자 입력 :") 숫자 입력 : 1 2 3 4 >>> s '1 2 3 4' >>> numbers = map (int, s.split()) >>> 숫자 [1, 2, 3, 4] >>> m = [1, 2, 3, 4, , 'Six', 'Seven', 'Eight'] >>> e = [i가 있으면 i의 경우] >>> e [] >>> e = [i는 m 내가 숫자라면] >>> e [] – sayth

관련 문제