使用Python合併字典鍵值並移除重複元素的實例程式碼

高洛峰
發布: 2017-03-24 17:32:37
原創
1867 人瀏覽過

假設在python中有一字典如下:
x={'a':'1,2,3', 'b':'2,3,4'}
需要合併為:
x={'c':'1,2,3,4'}
需要做三件事:
1. 將字串轉換為數值列表
2. 合併兩個列表並新增新的鍵值
3. 移除重複元素
第1步通過常用的函數eval()就可以做到了,步驟2需要加入一個鍵值並且加入元素,第3步利用set集合的性質可以達到去重的效果,不過最後需要再將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個,導致編譯器會辨識為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
登入後複製


處理方法是,人為地將'b'中的元素複製一份,使編譯器不識別為int:

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]}
最後一個方法也能夠處理前兩種情況。

以上是使用Python合併字典鍵值並移除重複元素的實例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板