2014-07-22 4 views
0

내 코드를 보면 ...사전에있는 모든 값을 한 번에 확인할 수 있습니까?

# 1 = in the bookshelf, 0 = not in the bookshelf 
bookshelf = {} 
bookshelf["The Incredible Book About Pillows"] = 1 
bookshelf["Little Fox and his Friends"] = 1 
bookshelf["How To Become a Superhero: Part 1"] = 0 

if bookshelf["The Incredible Book About Pillows"] == 1: 
    print("The Incredible Book about Pillows") 
if bookshelf["Little Fox and his Friends"] == 1: 
    print("Little Fox and his Friends") 
if bookshelf["How To Become a Superhero: Part 1"] == 1: 
    print("How To Become a Superhero: Part 1") 

... 책장에 현재있는 모든 책을 인쇄하는 더 좋은 방법이은 (값 1을 가지고)? 아니면 책꽂이에서 꺼내어 다시 넣을 때 사전에 추가 할 때 사전에서 삭제하는 것이 가장 쉬운 방법입니까?

답변

0

두 가지 옵션이 있습니다.

1) 사전의 keys 속성을 사용하여 키 (책 제목)가 현재 사전에 포함되어 있는지 확인할 수 있습니다. dict documentation에는 더 많은 유용한 정보가 있습니다.

2) 당신은 그냥 "== 1"책 제목을 포함하는 다른 목록으로 목록을 필터링 지능형리스트를 사용할 수 있습니다

+0

, 그래서 나는 정말이 ... 더 철저하게 조금 설명 할 수있는 모든 이해하지 않았다 – PhP

+0

설명 (및 가고자하는 방향)은 사전으로 무엇을하려고하는지에 따라 다릅니다. 당신은 가지고있는 책의 목록을 보관하고 있습니까? 그렇다면 목록은 아마도 dict보다 나은 구조 일 것입니다. –

0

바로이 작업을 수행 할 이유 :

for book in bookshelf.keys(): 
    if bookshelf[book] == 1: 
     print book 
2

당신은 반복 할 수 비교적 쉽게 그래서 같은 사전의 항목 이상 : 당신은 정독하고 확인하는

for key, value in bookshelf.items(): #.iteritems() also works, returns an iterator. 
    if value == 1: 
    print key 

.items()(key, value) 튜플의 목록을 반환합니다. 내가 멍청한 놈이야

booksInShelf = [book for book in bookshelf if bookshelf[book] == 1] 
for book in booksInShelf: 
    print(book) 
0
filter(lambda k: k if bookshelf[k] == 1 else None, bookshelf) 
관련 문제