2014-07-22 45 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) 
相关问题