Ich habe eine Frage zum folgenden Code

 smaller={}
 for( dest in a[neigbour].keys())

    if(dest in smaller.keys() == False):
        print 'false'
    }

Ich kann diesen Code nicht drucken lassen false .. mache ich etwas falsch? Ich frage mich, ob ich das Richtige tue, um die Anweisung dest in smaller.keys() == False zu überprüfen.

0
runcode 22 Okt. 2012 im 03:42

3 Antworten

Beste Antwort

Das Gegenteil von dest in smaller.keys() ist dest not in smaller.keys(). Keine Notwendigkeit, mit False oder True zu vergleichen:

if (dest not in smaller.keys()):

Dokumentation für in und not in: http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange

4
mathematical.coffee 21 Okt. 2012 im 23:45

Ihre Python-Syntax ist ziemlich verwirrt. Zum einen benötigen Sie nach Ihrer for -Anweisung ein :, und es ist im Allgemeinen nicht idiomatisch, in Python geschweifte Klammern um eine for -Schleife zu verwenden. Anstatt mit False mit == zu vergleichen, verwenden wir im Allgemeinen not:

smaller = {}
for dest in a[neighbour].keys():
    if dest not in smaller.keys():
        print('false')
4
Yuushi 21 Okt. 2012 im 23:46

Neben den anderen Antworten, die Sie erhalten haben, könnte der Code wie folgt geschrieben werden:

for key in a[neighbour].viewkeys() - smaller.viewkeys():
    print key, 'not found'

Dies nutzt das setähnliche Verhalten von .viewkeys, um auf einfache Weise einen Satz aller Schlüssel in a[neighbour] und nicht in b zu erstellen, und führt dann eine Schleife darüber durch.

1
Jon Clements 22 Okt. 2012 im 09:20