2017-10-15 13 views
0

私は辞書のキーを比較しようとしています。異なる値を持つ複数のキーがある場合、それらの異なる値をその1つのキーに追加できます。たとえば、私たちはdict {'a': 'b'、 'b': 'c'、 'c': 'd'}を追加して{'a': 'c'}を追加します。辞書のキーを比較して値を加算する -

答えて

0

このプロセス全体を動作させるには、実際にいくつかの文章を書くようにしてください。コード。ここにあなたを始めるためのインスピレーションがあります。

まず、あなたはPythonの辞書を反復処理し、順番にすべてのキーと値を取得できるようにする必要があります。

for key, value in new_dict.items(): 

さて、それは非常に便利です。

次に、新しい鍵が古いdictにあるかどうかを知る方法が必要です。すべての意図や目的のために

for key, value in new_dict.items(): 
    old_dict_key_val = old_dict.get(key) 
    if old_dict_key_val is not None: 
     write some code that goes here 
    else: 
     write some alternate code here for when key isn't in the dict 

、それらはかなり等価です。私たちはこれを行うことができ、

for key, value in new_dict.items(): 
    if key in old_dict: 
     write some code that goes here 
    else: 
     write some alternate code here for when key isn't in the dict 

代わりに:私たちはここにいることを行うには、2つの方法を持っています。これはあなたを始めさせるのに十分なはずです!その後、あなたが立ち往生した場合、特定の質問でここに戻ってくることができます。

この問題を解決するにはいくつかのコードを書いて幸運を祈る!

0

try/exceptを使用して少し慣習的ではありませんが、非常にコンパクトでPythonicです。

big_dict = {'a':'b','b':'c','c':'d'} 
little_dict = {'a':'c'} 

for key, value in little_dict.items(): 
    try: 
     big_dict[key] += value 
    except KeyError: 
     big_dict[key] = value 
+0

Zrot25 @キーが辞書にあった場合ので、私は、そのキーの値を追加することができれば私がチェックするために許可されていますか? –

0

あなたは、パッケージバーチャルツール(https://toolz.readthedocs.io/en/latest/index.html)からきちんと機能merge_withを使用することができます。

この関数は、引数として(1)異なるキーの値を同じキーで処理する関数と、(2)マージしたい関数を取ります。

from toolz import merge_with 

d1 = {'a':'i','b':'j'} 
d2 = {'a':'k'} 

def conc(a): 
    return ''.join(a) 

a = merge_with(conc,d1,d2) 

>>> {'a': 'ik', 'b': 'j'} 
0

defaultdictを使用します。

from collections import defaultdict 

d = defaultdict(str) 
d.update({'a': 'b','b': 'c','c': 'd'}) 
print(d) 
// defaultdict(<type 'str'>, {'a': 'b', 'b': 'c', 'c': 'd'}) 

d.update({'a': 'c'}) 
print(d) 
// defaultdict(<type 'str'>, {'a': 'bc', 'b': 'c', 'c': 'd'}) 
0

私は実際に私がやったことの返信 ためのおかげで私の質問についての混乱のために、この申し訳ありませんでした私の問題の解決策を考え出しました。これは、これが仕事になりました一緒に

for x in range(len(word)) 
    key = word[x] 
    if key in dict: 
     dict[word[x]] = [word[x+1] + dict[word[x]] 
    else: 
     dict[word[x] = word[x+1] 
関連する問題