擅长:python、mysql、java
<p>老实说,我认为您已经被数据结构弄糊涂了,并想出了比您需要的复杂得多的东西。在</p>
<p>一种适合的方法是为每个服务使用Python字典,逐行更新它们。在</p>
<pre><code>wb = load_workbook("sample.xlsx")
ws = wb.active
objs = {}
headers = next(ws.iter_rows(min_row=1, max_row=1, values_only=True))
for row in ws.iter_rows(min_row=2, values_only=True):
if row[0] not in objs:
obj = {key:value for key, value in zip(headers, row)}
objs[obj['ods_service_id']] = obj
else:# update dict with non-None values
extra = {key:value for key, value in zip(headers[3:], row[3:]) if value != "NULL"}
obj.update(extra)
# write to new workbook
wb2 = Workbook()
ws2 = wb2.active
ws2.append(headers)
for row in objs.values(): # do they need sorting?
ws2.append([obj[key] for key in headers])
</code></pre>
<p>请注意如何不用计数器就可以做任何事情。在</p>