ホームページ  >  記事  >  バックエンド開発  >  Python を使用して辞書キー値をマージし、重複する要素を削除するサンプルコード

Python を使用して辞書キー値をマージし、重複する要素を削除するサンプルコード

高洛峰
高洛峰オリジナル
2017-03-24 17:32:371804ブラウズ

Python に次のような辞書があるとします:
x={'a':'1,2,3', 'b':'2,3,4'} にマージする必要があります:

x= {'c':'1,2,3,4'}
次の 3 つのことを行う必要があります: 1.
string を数値リストに変換します2. 2 つのリストを結合します。新しいキーの値
3. 重複した要素を削除します
最初のステップは、一般的に使用される
関数eval() を使用して実行できます。2 番目のステップは、キー値を追加し、要素を追加する必要があります。 setセットの効果は大きいですが、最終的にはセットコレクションをlistリストに変換する必要があります。コードは次のとおりです:

x={'a':'1,2,3','b':'2,3,4'}
x['c']=list(set(eval(x['a'])+eval(x['b'])))
del x['a']
del x['b']
print x

出力結果は次のとおりです:

{'c': [1, 2, 3, 4]}ただし、バッチ処理では、キーの値の 1 つが 1 しか持たない場合があります。要素であり、コンパイルが発生します。プロセッサはそれを int 型として認識し、エラーを引き起こします。

x={'a':'1,2,3','b':'2'}
x['c']=list(set(eval(x['a'])+eval(x['b'])))
del x['a']
del x['b']
print x

実行結果は次のとおりです:

Traceback (most recent call last):
 File "test.py", line 2, in <module>
  x['c']=list(set(eval(x['a'])+eval(x['b'])))
TypeError: can only concatenate tuple (not "int") to tuple

処理方法は、コンパイラがintとして認識しないように、'b'の要素を人為的にコピーすることです:

x={'a':'1,2,3','b':'2'}
x['c']=list(set(eval(x['a'])+eval(x['b']+','+x['b'])))
del x['a']
del x['b']
print x

これで正常に実行できます。ここでは、set が重複した要素を削除し、同じ要素を追加する機能を利用します。ただし、「b」の要素が空の場合、このメソッドも失敗します。ここでは、Python リストの最後の要素の後にカンマを付けることができるという事実を利用する必要があり、それを次のように処理できます。

x={'a':'1,2,3','b':''}
x['c']=list(set(eval(x['a']+','+x['b'])))
del x['a']
del x['b']
print x

実行結果:

{'c': [1, 2, 3]}最後のメソッドは、最初の 2 つの状況も処理できます。


以上がPython を使用して辞書キー値をマージし、重複する要素を削除するサンプルコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。