2017-04-23 55 views
0

我試圖將Excel電子表格中的信息組織到字典中。這裏是電子表格是如何構成的一個例子:如何根據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'] 
} 

我該如何解決這個問題?

+0

可能的[如何創建Excel電子表格的內容字典?]的重複項(http://stackoverflow.com/questions/43574918/how-to-create-a-dictionary-of-the-contents- Excel的電子表格) –

回答

1

如果你已經擁有你列出兩列如:

>>> 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']} 
>>> 
0

假設col1col2是列值列表...

​​3210

zip(col1, col2)合併兩個列表,讓您得到...

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

然後我們遍歷這個列表,並且鍵添加到字典中,如果它不存在,或者乾脆追加到列表中,如果它是。

+0

雖然你這樣做的方式有效,但它需要多次在字典中查找「key」,這是次優的。 – martineau

相關問題