Re: [問題] 如何去除重複內容

看板Python作者 (Eden)時間8年前 (2017/07/22 23:10), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《drmexro (絲瓜瓜瓜)》之銘言: : 最近要整理一批資料,資料的形式大約如下 : 公司名稱 年份 月份 狀態 : A公司 2015 1 狀態1 我想到的只有這個辦法... --- tags = ['company', 'year', 'month', 'status'] source = [ {'company': 'B', 'year': '2015', 'month': '11', 'status': 'case 1'}, {'company': 'A', 'year': '2015', 'month': '11', 'status': 'case 1'}, {'company': 'A', 'year': '2015', 'month': '12', 'status': 'case 2'}, {'company': 'B', 'year': '2015', 'month': '12', 'status': 'case 1'}, {'company': 'A', 'year': '2016', 'month': '1', 'status': 'case 2'}, {'company': 'B', 'year': '2016', 'month': '1', 'status': 'case 1'}, {'company': 'B', 'year': '2016', 'month': '2', 'status': 'case 2'}, {'company': 'A', 'year': '2016', 'month': '2', 'status': 'case 2'}, ] data = {} for s in source: (co, yr, mo, st) = (s[t] for t in tags) data.setdefault(co, {}).setdefault(st, {}).setdefault(yr, []).append(mo) data 會長這樣 --- { 'A': { 'case 1': { '2015': ['11'] }, 'case 2': { '2015': ['12'], '2016': ['1', '2'] } }, 'B': { 'case 1': { '2015': ['11', '12'], '2016': ['1'] }, 'case 2': { '2016': ['2'] } } } 不知道還有沒有其他好方法? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.169.113.37 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1500736210.A.5CD.html

07/22 23:16, , 1F
那一堆 setdefault 改用 defaultdict 會簡單很多
07/22 23:16, 1F

07/23 08:22, , 2F
謝謝分享方法 先來試試看
07/23 08:22, 2F
文章代碼(AID): #1PSshIND (Python)
文章代碼(AID): #1PSshIND (Python)