2013-12-12 4 views
0

안녕하십니까. 나는 내 CS를 위해 공부하고 있으며 사전이 거기에있다. 나는 사전을 잘 알고 있지만,이 사람은 저를 곤란하게합니다. 그런 질문을 어떻게 해결할 수 있을까요?가치에 기초한 사전 인쇄 키

주어진 사전이 있으면 값이 1에서 100까지의 범위에있는 모든 키의 목록을 생성하는 코드 (이전 스타일, 기능이 필요 없음)를 계속 작성하십시오. 주어진 사전에 대해 프로그램을 하드 코딩하지 마십시오.

D = {1:1000, 2:2000, 3:3000, 1111:10, 2222:20, 3333:30} 

예, 이것은 실제 검토 질문하지만이 숙제를하지 않습니다.

사전을 통해 for 루프를 수행해야한다고 생각했지만 dictkey:value에 저장되어 있기 때문에 실제로는 value 만 비교해야합니다.

뭐든지 환영합니다! 다음에 대한

+0

그러나 목록에서 키를 수집하려고하므로 다시 키가 필요합니다. 문제가있는 곳은 어디입니까? 사전을 반복합니다 (힌트 :'D.items()'(Python 3) 사용), 각 값을 확인한 다음 값이 범위 내에 있으면 키를 목록에 추가하십시오. –

+0

dict.items(), 키, 값 쌍 – alko

+0

목록 (또는 3.x보기)을 필터링 할 수 있습니다. python2에서 dict.iteritems()를 사용하는 것이 더 나을 것입니다. – smeso

답변

3
[k for k, v in D.items() if 1 <= v <= 100] 
+0

감사합니다! 이것은 정확하게 맞습니다. – user2840144

1

방법 :

>>> D = {1:1000, 2:2000, 3:3000, 1111:10, 2222:20, 3333:30} 
>>> [key for key in D if 1 <= D[key] <= 100] 
[3333, 2222, 1111] 
+1

아니요, 키가 아닌 값은 그 범위에 있어야합니다 ... –

+0

@TimPietzcker 그 점을 알려 주어서 고마워요. 이전 콘솔 로그에서 게임이었습니다. 실제로 게시하려고 시도한 게임이 아닙니다! : P –

+0

아 물론 이거 정말 대단해! – user2840144

1

나는 사실을 알아 냈다고 생각!

내 교수가 어떤 이유에서 건 결코 넘어 가지 않았기 때문에 사용법을 이해하지 못했습니다.

d ={1:1000, 2:2000, 3:3000, 1111:10, 2222:20, 3333:30} 

for key in d: 
    if d[key] >=1 and d[key] <=100: 
     print(key) 
    else: 
     pass 
+0

이것은 가장 단순하지만 이해가 빠릅니다. –

+0

확실히. 내가하기 전에 알아야 할 복잡한 이해가 있습니까? 내 교수님은 결코 끝나지 않았지만 스택에 항상있는 것을보고 훨씬 더 좋아 보입니다. – user2840144

+0

아니요, 그것에 대해 복잡한 것은 없습니다. 이들은 자국어 코드로 구현되기 때문에 더 빠릅니다. 정상적인 방법으로 작성한 것처럼'for' 루프를 작성하면됩니다. 여러 개의'if-else' 문을 추가 할 수도 있습니다. 하나의 라이너를 쓸 수 있기 때문에 매우 편리합니다. 너무 멋지다! :) –