python从ex创建字典

2024-09-22 14:29:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张有两列的excel表格。第1列是名称,第2列是年龄。我想创建一个字典,名字是关键,年龄是价值。这是代码,但它创建的字典不正确。

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))

我想要一个像下面这样的字典,来自两列excel表格。

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

Tags: in名称fordataindex字典value名字
2条回答

对熊猫来说这很简单:

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

我现在是:

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

index_col=0如果“name”在excel文件的第一列中

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

names = (name.value for name in worksheet.col(0))
ages = (int(age.value) for age in worksheet.col(1))
data = dict(zip(names, ages))

如果要保证顺序,可以使用collections.OrderedDict对象代替普通字典。

如果您需要处理错误的数据(例如,有人在工作表中输入了字符串而不是整数年龄),则可能必须想出namesages生成器对象的自定义实现(上面的那些对象假设运行顺利)。

相关问题 更多 >