2016-11-03 7 views
1

リストの名前と電子メールの両方を印刷するのに問題があります。コードの最初の部分はすでに書かれていて、私の試みはforループです。誰かが私を助けることができるなら、それは大いに感謝されるでしょう。ループがcontact_emails内の各連絡先を印刷するためのPythonの辞書に両方の文字列を印刷するには

書き込みA:

はここ方向です。与えられたプログラムのサンプル出力:

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

コード:

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

あなたは閉じています。 '%sは%sです。%(contact_emails [email]、email))... ... –

答えて

3

あなたの問題は、あなたの代わりに括弧(())の角括弧([])を使用する必要があるということです。以下のため@PierceDarraghに感謝を

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

:しかし、私は.items()dictの属性の代わりにS(場合には、あなたの使ってPython 2.xは.iteritems()になり)使用することをお勧めし

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

:そうのように.format()を使用すると、文字列のフォーマットに適したオプションになります。例えば。

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

'str.format'を使用する方が良いですか? 'print( '{}は{}'。書式(名前、電子メール))'私には読みやすい。おそらくもう少し長くなるかもしれませんが、それはもはやPythonicの解決策です。 –

+0

@PierceDarraghもちろん。私はちょうどOPに自分のコードを戻していた。しかし、はい、 '.format()'は行く方法です。 –

+0

あなたの答えにOPに言及する価値がありますか?私は関係なくupvotedしましたが、良い方法がないことを知っているので、古いCスタイルの '%'メソッドを使っている人もいると思います! –

0

これを行うための簡単な方法を使用して次のようになります。@ShadowRangerもプリント可変数引数を利用して、そしてフォーマットすると、また、良いアイデアだと述べているように

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

あるいは、 for/inループが各キーをループし、各キーごとに各キーを印刷し、次に各値を印刷します。ここで

は、私はそれを行うだろう方法は次のとおりです。

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) 

は、この情報がお役に立てば幸いです。

関連する問題