2016-07-20 3 views
-2

dict(details_dict)を返し、別の関数(内容)でこのdictを出力したい関数(items)があります。ここで関数内のdictを返し、その内容を別の関数に出力します。

details_dict = { 
'car' : 'fast', 
'bike' : 'faster', 
'train' : 'slow' 
} 

は私が実装二つの機能がありますが、私は彼らが正しいかどうかわからないです:forループの後details_dictの

内容があることになっています。

def items(root): 
    for a in list: # example for loop, not important but details_dict is created here 
     details_dict = ['name' : 'state'] 
    return details_dict 

def contents(root): 
    for name, state in details_dict.items(): 
     print ("%s is set to %s" % (name, state) 
+1

はすでに作成details_dictですか?もしそうなら、それはなぜitems関数で(間違っていても)再作成されていますか?アイテム機能は何をしていますか? – Samuel

+0

いいえ、それはforループを使って項目(ルート)に作成されます。il質問を編集します。 – zubinp

+4

*正しいかどうかわかりません* - [試してみてください](https://repl.it/CeJY/0)。それは動作しますか?それは働くのではなく何をするのですか? – TessellatingHeckler

答えて

0

印刷文に括弧がなく、インデントの問題が発生する可能性があります。ここで何をやっているの修正版は、辞書の構築方法の詳細を無視して、です:

def buildItems(): 
    return { 
     'car': 'fast', 
     'bike': 'faster', 
     'train': 'slow' 
    } 

def contents(): 
    details_dict = buildItems() 
    for name, state in details_dict.items(): 
     print ("%s is set to %s" % (name, state)) 

contents() 

出力:それはあなたはそれが何をしたいなら

car is set to fast 
train is set to slow 
bike is set to faster 

、それが動作します。 contents()関数の中から別の関数で作成したdictを正常に印刷できます。

+0

Pythonでは、dictは順序を保持しないことに注意してください。注文を保存する必要がある場合は、代わりに[OrderedDict](https://pymotw.com/2/collections/ordereddict.html)をお試しください – voodoodrul

0

私はあなたのデータの構造を知らずに、私は最高の推測をしました。出力

list_a = ['car', 'bike', 'train'] 
list_b = ['fast', 'faster', 'slow'] 

def items (one, two): 
    the_dict = {} 
    for (i,j) in zip(one, two): 
     the_dict[i] = j 
    return the_dict 

def contents(a_dict): 
    for key in a_dict: 
     print 'The key ' +key+ ' is assigned to '+a_dict[key] 

details_dict = items(list_a, list_b) 

contents(details_dict) 

The key car is assigned to fast 
The key train is assigned to slow 
The key bike is assigned to faster 
関連する問題