2016-11-03 10 views
1

Ich habe Probleme beim Drucken sowohl den Namen in der Liste und die E-Mail. Der Anfangsteil des Codes war bereits vor geschrieben und mein Versuch ist die for-Schleife. Wenn jemand mir helfen könnte, würde das sehr geschätzt werden.So drucken Sie beide Zeichenfolgen in einem Wörterbuch in Python

Hier sind die Richtungen:

Write eine for-Schleife jeden Kontakt in contact_emails zu drucken. Beispielausgabe für das gegebene Programm:

[email protected] is Mike Filt 
[email protected] is Sue Reyn 
[email protected] is Nate Arty 

Code:

contact_emails = { 
'Sue Reyn' : '[email protected]', 
'Mike Filt': '[email protected]', 
'Nate Arty': '[email protected]' 
} 

for email in contact_emails: 
print('%s is %s' % (email, contact_emails(email))) 
+0

Sie sind in der Nähe ... 'print ('% s ist% s'% (contact_emails [email], email))' ... –

Antwort

3

Ihr Problem ist, dass Sie in eckigen Klammern ([]) statt Klammern (()) verwenden müssen. Wie so:

for email in contact_emails: 
    print('%s is %s' % (contact_emails[email], email)) # notice the []'s 

Aber ich empfehlen die Verwendung der .items() Attribut dict (das .iteritems() wenn Ihr mit Python 2.x wäre) s statt:

for name, email in contact_emails.items(): # .iteritems() for Python 2.x 
    print('%s is %s' % (email, name)) 

Dank @PierceDarragh für Erwähnen Sie, dass die Verwendung von .format() eine bessere Option für die Formatierung von Zeichenfolgen wäre. z.B.

print('{} is {}'.format(email, name)) 

Oder, wie @ShadowRanger auch, dass variable Anzahl Argumente Vorteil der Ausdrucke nehmen erwähnt, und die Formatierung, auch eine gute Idee sein würde:

print(email, 'is', name) 
+0

Ist es nicht besser 'str.format' zu verwenden? 'print ('{} ist {}'. format (name, email))' liest sich leichter für mich. Vielleicht ist es ein bisschen länger, aber es ist mehr die pythonische Lösung, denke ich. –

+0

@PierceDarragh Natürlich. Ich gab dem OP einfach seinen Code zurück, so wie er war. Aber ja, '.format()' wäre der richtige Weg. –

+0

Vielleicht erwähnenswert, um die OP in Ihrer Antwort? Ich habe trotzdem upgestimmt, aber ich denke, einige Leute benutzen weiterhin die alte C-Stil '' 'Methode, weil sie nicht wissen, dass es einen besseren Weg gibt! –

0

Ein einfacher Weg, dies zu tun, wäre mit for/in-Schleifen, die durch jeden Schlüssel durchlaufen werden und für jeden Schlüssel jeden Schlüssel und dann jeden Wert drucken.

Hier ist, wie ich es tun würde:

contact_emails = { 
    'Sue Reyn' : '[email protected]', 
    'Mike Filt': '[email protected]', 
    'Nate Arty': '[email protected]' 
} 

for email in contact_emails: 
    print (contact_emails[email] + " is " + email) 

Hoffnung, das hilft.

Verwandte Themen