2017-04-22 3 views
-2

私は2つの辞書を組み合わせた関数を構築しようとしています。それは簡単なはずですが、キャッチがあります。 ID番号は、両方で見つかっされている場合にのみ、私は辞書を結合する必要がありPython- 2つの辞書の一致するキーから情報を取得しますか?

info_format_dict={ name: (id, type1, type2, generation, legendary), 
'Bulbasaur': (1, 'Grass', 'Poison', 1, False), 'Charmander': (4, 
'Fire', None, 1, False)} 

stats_format_dict={ id: (hp, attack, defense, speed),1: (45, 49, 49, 
45)} 

は、2つの辞書を考えます。したがって、この例では、info_format_dict 'Bulbasaur'はid 1を持ち、stats_format_dictでは1がID番号です。彼らは一致します。試合はちょうど破棄されますがありません

new_dict={"Bulbasaur": (1, "Grass", "Poison", 45, 49, 49, 45, 1, 
False)} 

どれそ​​の他:それから私は、次の形式で新しい辞書にその項目を追加する必要があります。私が作成した関数は、辞書を比較のリストにしますが、一度一致を見つけたら、実際の結合をどうやって行うかについては固執しています。実際の組み合わせをどうやって行うのですか?私のチェックは正しいですか?ここで

は私のコードです:

def combine_databases(info_format_dict,stats_format_dict): 
    statskeyslist=[] 
    idnums=[] 
    for key,values in info_format_dict.items(): 
     idnum=values[0] 
     idnums.append(idnums) 

    for keys in stats_format_dict: 
     stats_key=keys 
     statskeyslist.append(keys) 

    for item in statskeyslist: 
     if item in idums: 
     #combine them into a dictionary 

提案?ソリューション?

答えて

0

内部ループの内側に両方のキーがあります。 (あなたが上に作成したのであれば、理由を説明できるはずです)なぜ各辞書から値を取得して組み合わせようとしないのですか?

v1 = info_format_dict[item] 
v2 = stats_format_dict[item] 

ここで例外がスローされないことを保証する必要があります。 (理由は?)

あなたはそれを返すために別の言葉に固執する必要があります。

+0

どの順番でですか?キーの前後に? – kg123

+0

まあ、意味がありますか? dictに項目を追加するとどのように機能するのか理解していますか?両方を試し、何が起こるかを見てください。 – nimish

関連する問題