2014-07-22 3 views
0

En regardant mon code ...Puis-je vérifier toutes les valeurs dans un dictionnaire à la fois?

# 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") 

... est-il une meilleure façon d'imprimer tous les livres qui sont actuellement dans la bibliothèque (a la valeur 1)? Ou est-ce la manière la plus simple de simplement les supprimer du dictionnaire quand je les sors de la bibliothèque et que je les ajoute quand je les remets?

Répondre

0

Vous avez deux options.

1) Vous pouvez utiliser la propriété keys du dictionnaire pour voir si la clé (titre du livre) est actuellement contenue dans le dictionnaire. Le dict documentation a beaucoup plus d'informations utiles.

2) Vous pouvez utiliser une compréhension de la liste pour filtrer votre liste dans une autre liste qui contient seulement des titres de livres que « == 1 »

+0

Je suis un noob, donc je ne comprends pas vraiment tout ce que ... Pouvez-vous expliquer un peu plus en profondeur? – PhP

+0

L'explication (et la direction que vous voulez aller) dépend beaucoup de ce que vous essayez de faire avec votre dictionnaire. Est-ce que vous gardez juste une liste de livres que vous avez? Si c'est le cas, une liste serait probablement une meilleure construction qu'une dictée. –

0

Pourquoi ne pas simplement ceci:

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

Vous pouvez itérer sur un des éléments de dictionnaire assez facilement comme ceci:

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

.items() retourne une liste de tuples (key, value) pour vous lisiez attentivement et de vérifier.

2

Utilisez une compréhension de la liste:

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) 
Questions connexes