2014-07-22 90 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

解釋(和你想去的方向)很大程度上取決於你想用你的字典做什麼。你只是保留你擁有的書籍清單嗎?如果是這樣的話,那麼列表可能會比字典更好。 –

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)元組列表供您仔細閱讀和檢查。

2

使用列表理解:

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) 
相關問題