假設在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中文網其他相關文章!