使用 defaultdict 从 .xlsx 文件附加一个列表
Using defaultdict to append a list from an .xlsx file
我正在尝试获取一个包含两个字段(ID 和 xy 坐标)的 [=30=] 文件并创建一个字典,以便每个 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,of,1]),('2'[all,the,coordinate,with,oID,of,2]等)]
我正在尝试使用 for 语句遍历 excel sheet 以用前 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()))
哪个returns:
[(11, ['-121.177487,35.49885'])]
只有 excel sheet 的第 200 行,而不是整个行..我不确定我做错了什么,是否与 for 语句有关?我是不是以错误的方式思考这个问题?我是 python 的新手,任何建议都会有所帮助!
您正在覆盖 coordinate_list
200 次。相反,创建它,然后使用 +=
运算符附加到它。
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()))
我正在尝试获取一个包含两个字段(ID 和 xy 坐标)的 [=30=] 文件并创建一个字典,以便每个 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,of,1]),('2'[all,the,coordinate,with,oID,of,2]等)]
我正在尝试使用 for 语句遍历 excel sheet 以用前 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()))
哪个returns:
[(11, ['-121.177487,35.49885'])]
只有 excel sheet 的第 200 行,而不是整个行..我不确定我做错了什么,是否与 for 语句有关?我是不是以错误的方式思考这个问题?我是 python 的新手,任何建议都会有所帮助!
您正在覆盖 coordinate_list
200 次。相反,创建它,然后使用 +=
运算符附加到它。
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()))