use*_*888 4 python xlrd python-3.x
我有一个有2列的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))
Run Code Online (Sandbox Code Playgroud)
我希望有一个类似下面的字典来自2列excel表.
{'Ann': 12, 'Maria': 3, 'Robin': 4, 'NameN':N}
Run Code Online (Sandbox Code Playgroud)
这与熊猫很简单:
import pandas as pd
my_dic = pd.read_excel('names.xlsx', index_col=0).to_dict()
Run Code Online (Sandbox Code Playgroud)
my_dic现在是:
{'罗宾':4,'玛丽亚':3,'安':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))
Run Code Online (Sandbox Code Playgroud)
如果你想保证顺序,你可以使用collections.OrderedDict对象data代替普通字典。
如果您需要处理不良数据(即有人在工作表中输入了字符串而不是整数年龄),您可能必须提出 和names生成ages器对象的自定义实现(上面的假设顺利进行)。
| 归档时间: |
|
| 查看次数: |
7893 次 |
| 最近记录: |