如何根据Excel spreadsh中的列组织词典

2024-05-19 18:48:32 发布

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

我正在尝试将Excel电子表格中的信息组织到字典中。以下是电子表格的结构示例:

Col 1     Col 2
Hello     World
Hello     Earth
Hello     Planet
Hello     Mars
Hello     Moon
Hi        Pluto
Hi        Neptune
Hi        Jupiter

我目前有Python代码将每一列导入到一个列表中,结果如下所示:

['Hello', 'Hello', 'Hello', 'Hi', 'Hi', etc]
['World', 'Earth', 'Planet', 'Mars', 'Moon', etc]

我的最终目标是拥有一个Python字典,其中每个键(Col1的内容)都包含一个映射到(Col2的内容)的多个值的列表。例如:

{
    'Hello': ['World', 'Earth', 'Planet', 'Mars', 'Moon']
    'Hi': ['Pluto', 'Neptune', 'Jupiter']
}

我该怎么做呢


Tags: hello列表world字典etccolhi电子表格
2条回答

假设col1col2是列值列表

result = {}
for key, value in zip(col1, col2):
    if key in result.keys():
        result[key].append(value)
    else:
        result[key] = [value]

zip(col1, col2)合并两个列表,这样您就可以

[('Hello','World'),('Hello','Earth'),....]

然后我们循环遍历这个列表,如果不存在,则将键添加到字典中,如果存在,则简单地附加到列表中

如果列表中已有两列:

>>> col1 = ['Hello', 'Hello', 'Hello', 'Hi', 'Hi']
>>> col2 = ['World', 'Earth', 'Planet', 'Mars', 'Moon']

然后简单地使用普通dictsetdefault方法(或者也可以使用collections.defaultdict

>>> map = {}
>>> for key, element in zip(col1, col2):
...     map.setdefault(key, []).append(element)
...
>>> map
{'Hello': ['World', 'Earth', 'Planet'], 'Hi': ['Mars', 'Moon']}
>>>

相关问题 更多 >