Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x Excel工作表到python dict_Python 3.x - Fatal编程技术网

Python 3.x Excel工作表到python dict

Python 3.x Excel工作表到python dict,python-3.x,Python 3.x,我到处找了找,但是找不到一个简单的方法把我的工作表转换成字典。我的工作表是这样的,每个字符串都放在自己的一行中,前面的列是空的。我可以很容易地将其转换为字典吗?还是必须用值填充空单元格 为清晰起见进行编辑:虚线仅用于表示值前面的空列。我有一个xls和csv的数据文件。dict应该将第一列作为键保存,然后将第二列和第三列作为“子键(?)”,第四行作为值保存。该表看起来像,我计划在QTreeView中使用它 key 1 ----value 1 --------value a --------valu

我到处找了找,但是找不到一个简单的方法把我的工作表转换成字典。我的工作表是这样的,每个字符串都放在自己的一行中,前面的列是空的。我可以很容易地将其转换为字典吗?还是必须用值填充空单元格

为清晰起见进行编辑:虚线仅用于表示值前面的空列。我有一个xls和csv的数据文件。dict应该将第一列作为键保存,然后将第二列和第三列作为“子键(?)”,第四行作为值保存。该表看起来像,我计划在QTreeView中使用它

key 1
----value 1
--------value a
--------value b
--------value c
----value 2
--------value d
--------value e
key 2
----value 3
--------value f
--------value g
--------value h
----value 4
--------value i
--------value j

我很不好意思发布这个非常混乱的答案,但既然这是这里唯一的答案,我还是会发布它。这是我唯一能找出如何从电子表格构建嵌套字典的方法

不幸的是,它是硬编码的——动态地构建它会更好,如果我以后可以改进它,我会更新它

import xlrd

book = xlrd.open_workbook("data.xls")
sh = book.sheet_by_index(0)
d = dict(dict())

c1 = [str(c.value) for c in sh.col(0) if c.value != '']
c2 = [str(c.value) for c in sh.col(1) if c.value != '']
c3 = [str(c.value) for c in sh.col(2) if c.value != '']

val1 = c2[0]
val2 = c2[1]
val3 = c2[2]
val4 = c2[3]

v1 = {val1: c3[0:3]}
v2 = {val2: c3[3:5]}
v3 = {val3: c3[5:8]}
v4 = {val4: c3[8:10]}

k1 = {c1[0]: [v1, v2]}
k2 = {c1[1]: [v3, v4]}

d.update(k1)
d.update(k2)
然后,打印字典:

import pprint
pprint.pprint(d)
    {'key 1': [{'value 1': ['value a', 'value b', 'value c']},
               {'value 2': ['value d', 'value e']}],
     'key 2': [{'value 3': ['value f', 'value g', 'value h']},
               {'value 4': ['value i', 'value j']}]}

在找到更好的答案之前,我希望这能有所帮助。

您是否真的有Excel文件(如
xls
/
xlsx
文件)或只是CSV文件?为什么您的文件按照您描述的方式设置?破折号是您的文件的一部分吗?您希望生成的
dict
看起来像什么?我试图澄清这个问题您的
.xls
文件内容看起来像这样吗?我确实知道,但一切都在另一排。看起来是这样的:@Louvre你还想让这些行变得动态吗?