2017-01-12 7 views
0

pythonディクショナリとリストを一緒にジップすることはできますか?例についてはPythonディクショナリをまとめて一覧表示する

dict = {'A':1, 'B':2, 'C':3} 
num_list = [1, 2, 3] 
zipped = zip(dict, num_list) 

は、それから私はこのような何かをしたいと思います:

for key, value, num_list_entry in zipped: 
    print key 
    print value 
    print num_list_entry 

私はこのための解決策を見つけていないので、私は思ったんだけどどのように私はこれをやってみようか?

+0

「zipped」の各項目は何ですか?彼らは長さ3を持っていないので、あなたはそのような3つの名前に解凍することはできません。 – jonrsharpe

+2

**変数の名前としてdictを使用しないでください。my_dictのようなものを使用してください – Lucas

+0

辞書に "dict"という名前を使用することは悪い習慣です...実際のdictをシャドーします。関数名 –

答えて

3

iteritems()を使用できます。

dictionary = {'A':1, 'B':2, 'C':3} 
num_list = [1, 2, 3] 
zipped = zip(dictionary.iteritems(), num_list) 

for (key, value), num_list_entry in zipped: 
    print key 
    print value 
    print num_list_entry 
+0

ありがとうございます。私はdjangoアプリケーションでこれをやろうとしていますが、forループはテンプレートで動作していないようです。なぜどんなアイデア?あなたがどうなるDjangoテンプレートで –

+0

: {辞書用%、zip形式の%でnum_list_entry} { %キー= dictionary.0値を持つ= dictionary.1%} {{キー}} {{値}} { {num_list entry}} {%endwith%} {%endfor%} –

4

注:はありません。は、内蔵のdictをシャドウします。これはある日あなたを迎えに戻ってきます。

は今、あなたの問題のように、単にdict.itemsを使用します。

>>> d = {'A':1, 'B':2, 'C':'3'} 
>>> num_list = [1, 2,3 ] 
>>> for (key, value), num in zip(d.items(), num_list): 
...  print(key) 
...  print(value) 
...  print(num) 
... 
A 
1 
1 
C 
3 
2 
B 
2 
3 
>>> 

注:あなたがそれらを反復処理項目の順序に保証はありませんので、辞書は、順序付けされていません。

追加注:あなたが辞書を反復、それを反復処理キーオーバー:

>>> for k in d.keys(): 
...  print(k) 
... 
A 
C 
B 
>>> 

冗長化、およびPythonの2で、非効率的な:

>>> for k in d: 
...  print(k) 
... 
A 
C 
B 

この共通の構造物を作ります。

+0

ありがとう、私はそれを念頭に置いておくよ! –

関連する問題