作者AlaRduTP (Eden)
標題Re: [問題] 如何去除重複內容
時間Sat Jul 22 23:10:07 2017
※ 引述《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
→ uranusjr: 那一堆 setdefault 改用 defaultdict 會簡單很多 07/22 23:16
→ drmexro: 謝謝分享方法 先來試試看 07/23 08:22