使用defaultdict从.xlsx文件追加列表

我试图带有两个字段,ID和XY坐标的Excel文件,并创build一个字典,使每个ID是所有的XY坐标值的关键。

例如,excel文件看起来像这样:[1] [1]: http : //i.stack.imgur.com/P2agc.png

但是有超过900个oID值

我想最终的格式是[('0',[ – 121.129247,37.037939,-121.129247,37.037939,-121.056516,36.997779]),('1',[all,the,coordinates,with,oID,的,1]),( '2'[全部的,协调,与,OID的,2]等)。]

我正在尝试使用for语句遍历Excel表格来填充第一个200行的列表,然后将其放入默认字典中。

这是我迄今为止所做的:

wb=openpyxl.load_workbook('simpleCoordinate.xlsx') sheet=wb['Sheet1'] from collections import defaultdict CoordDict = defaultdict(list) for i in range (1,201,1): coordinate_list=[(sheet.cell(row=i,column=1).value, sheet.cell(row=i, column=2).value)] for oID, xy in coordinate_list: CoordDict[oID].append(xy) print(list(CoordDict.items())) 

它返回:

 [(11, ['-121.177487,35.49885'])] 

只有excel表格的第200行,而不是整个的东西..我不知道我在做什么错了,这是与声明的东西? 我以错误的方式思考这个问题吗? 我是一个Python的总新手任何build议将是有益的!

你正在覆盖200次coordinate_list 。 相反,创build它,然后用+=运算符追加到它。

 wb=openpyxl.load_workbook('simpleCoordinate.xlsx') sheet=wb.get_sheet_by_name('Sheet1') from collections import defaultdict coordinate_list = list() for i in range (1,201,1): coordinate_list += [(sheet.cell(row=i,column=1).value, sheet.cell(row=i, column=2).value)] coord_dict = defaultdict(list) for oid, xy in coordinate_list: coord_dict[oid] = xy print(list(coord_dict.items())) 
Interesting Posts