Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python从excel创建字典_Python_Python 3.x_Xlrd - Fatal编程技术网

python从excel创建字典

python从excel创建字典,python,python-3.x,xlrd,Python,Python 3.x,Xlrd,我有一张excel表格,有两列。第1列是姓名,第2列是年龄。我想创建一个字典,其中name是key,age是value。下面是代码,但它创建的字典不正确 keyValues = [x.value for x in worksheet.col(0)] data = dict((x, []) for x in keyValues) while curr_row < num_rows: curr_row += 1 for row_index in range(1,

我有一张excel表格,有两列。第1列是姓名,第2列是年龄。我想创建一个字典,其中name是key,age是value。下面是代码,但它创建的字典不正确

keyValues = [x.value for x in worksheet.col(0)]
data = dict((x, []) for x in keyValues)
while curr_row < num_rows:
        curr_row += 1
        for row_index in range(1, worksheet.nrows):  data[keyValues[row_index]].append(worksheet.cell_value(curr_row, 1))

如果您的列不包含名称和年龄以外的任何数据,并且您对数据质量非常有信心(年龄应该在哪里没有非数字数据,等等),那么您可以这样做:

names = (name.value for name in worksheet.col(0))
ages = (int(age.value) for age in worksheet.col(1))
data = dict(zip(names, ages))
如果您想保证订单,可以使用
集合.OrderedDict
对象作为
数据
而不是普通字典


如果您需要处理错误数据(即,有人在工作表中输入了字符串而不是整数年龄),您可能必须提出
名称
年龄
生成器对象的自定义实现(上述对象假定顺利进行)。

熊猫非常简单:

import pandas as pd
my_dic = pd.read_excel('names.xlsx', index_col=0).to_dict()
我的dic现在是:

{'Robin':4,'Maria':3,'Ann':12}

index\u col=0
如果“name”在excel文件的第一列中

import pandas as pd
my_dic = pd.read_excel('names.xlsx', index_col=0).to_dict()