Python合并字典索引值並去除重複元素的執行個體_python

來源:互聯網
上載者:User

假設在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合并字典索引值並去除重複元素的執行個體就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援雲棲社區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.