用Python从Excel创建字典

5

我有一个包含两列的Excel表格。第一列是名称,第二列是年龄。我想创建一个字典,其中名称是键,年龄是值。这是代码,但它创建了一个不正确的字典。

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} 
2个回答

7

使用pandas非常简单:

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

我的字典现在是:

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

如果“名称”在您的Excel文件的第一列中,则使用index_col=0


嗨!我会得到{12:{'Maria':3,'Robin':4}}。你知道我的问题可能是什么吗?@Marek - piah

0
如果您的列除了姓名和年龄外没有包含任何其他数据,并且您对数据质量非常有信心(例如,年龄应该是非数字数据等),那么您可以像这样处理它:
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对象来替换普通字典中的data
如果您需要处理错误数据(例如表格中有人输入字符串而不是整数年龄),您可能需要自定义实现namesages生成器对象(上面的示例假设一切都很顺利)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接