如何像字典一样实现元素之间的一对一映射,但也允许重复?
How to achieve one to one mapping between elements just like dictionaries but allowing duplicates also?
我有一个 excel 文件,其中包含与此类似的数据:
ColumnA ColumnB
A aaa
B eee
A ccc
A ddd
B fff
我们可以看到在columnA[=38]中有多个行具有相同的数据A或B =] 但对应于columnB.
中的不同数据
我需要找到一种方法,使 columnA 和 columnB 的数据相互映射,例如A:aaa,B:eee,A:ccc,A:ddd,B:fff
等
我知道字典不允许重复,因此尝试 defaultdict 从 collections 构造,但它会给出输出
defaultdict(<type 'list'>, {u'A': [u'aaa', u'ccc'], u'B': [u'eee']})
我不需要,因为它将 columnA 数据映射到 columnB 的多个元素。
我特别需要的是列表中的数据,例如
data[0] will have A:aaa
data[1] will have B:eee
我用defaultdict的代码如下:
from xlrd import open_workbook
from collections import defaultdict
data = defaultdict(list)
def get_data():
filename = "Demo.xlsx"
exl_file = open_workbook(filename)
sheet = exl_file.sheet_by_index(0)
for row_index in range(1,4):
col_a_data = sheet.cell(row_index,0).value
col_b_data = sheet.cell(row_index,1).value
data[col_a_data].append(col_b_data)
get_data()
print data
Python 中是否有任何数据结构可以帮助我实现这一点?
您是否只想将数据存储为字典列表?
如果是这样,这应该有效(未经测试)。如果没有,您希望如何存储您的数据?
from xlrd import open_workbook
data = []
def get_data():
filename = "Demo.xlsx"
exl_file = open_workbook(filename)
sheet = exl_file.sheet_by_index(0)
for row_index in range(1,4):
col_a_data = sheet.cell(row_index,0).value
col_b_data = sheet.cell(row_index,1).value
data.append({col_a_data:col_b_data});
get_data()
print data
我有一个 excel 文件,其中包含与此类似的数据:
ColumnA ColumnB
A aaa
B eee
A ccc
A ddd
B fff
我们可以看到在columnA[=38]中有多个行具有相同的数据A或B =] 但对应于columnB.
中的不同数据我需要找到一种方法,使 columnA 和 columnB 的数据相互映射,例如A:aaa,B:eee,A:ccc,A:ddd,B:fff
等
我知道字典不允许重复,因此尝试 defaultdict 从 collections 构造,但它会给出输出
defaultdict(<type 'list'>, {u'A': [u'aaa', u'ccc'], u'B': [u'eee']})
我不需要,因为它将 columnA 数据映射到 columnB 的多个元素。
我特别需要的是列表中的数据,例如
data[0] will have A:aaa
data[1] will have B:eee
我用defaultdict的代码如下:
from xlrd import open_workbook
from collections import defaultdict
data = defaultdict(list)
def get_data():
filename = "Demo.xlsx"
exl_file = open_workbook(filename)
sheet = exl_file.sheet_by_index(0)
for row_index in range(1,4):
col_a_data = sheet.cell(row_index,0).value
col_b_data = sheet.cell(row_index,1).value
data[col_a_data].append(col_b_data)
get_data()
print data
Python 中是否有任何数据结构可以帮助我实现这一点?
您是否只想将数据存储为字典列表? 如果是这样,这应该有效(未经测试)。如果没有,您希望如何存储您的数据?
from xlrd import open_workbook
data = []
def get_data():
filename = "Demo.xlsx"
exl_file = open_workbook(filename)
sheet = exl_file.sheet_by_index(0)
for row_index in range(1,4):
col_a_data = sheet.cell(row_index,0).value
col_b_data = sheet.cell(row_index,1).value
data.append({col_a_data:col_b_data});
get_data()
print data