斯蒂芬大帝
嵌套字典是字典中的字典。非常简单的事情。>>> d = {}>>> d['dict1'] = {}>>> d['dict1']['innerkey'] = 'value'>>> d{'dict1': {'innerkey': 'value'}}你也可以使用一个defaultdict从collections包装,以方便创建嵌套的字典。>>> import collections>>> d = collections.defaultdict(dict)>>> d['dict1']['innerkey'] = 'value'>>> d # currently a defaultdict typedefaultdict(, {'dict1': {'innerkey': 'value'}})>>> dict(d) # but is exactly like a normal dictionary.{'dict1': {'innerkey': 'value'}}您可以根据需要填充。我建议在你的代码的东西像下面:d = {} # can use defaultdict(dict) insteadfor row in file_map: # derive row key from something # when using defaultdict, we can skip the next step creating a dictionary on row_key d[row_key] = {} for idx, col in enumerate(row): d[row_key][idx] = col根据您的评论:可能上面的代码令人困惑。我的问题简而言之:我有2个文件a.csv b.csv,a.csv有4列ijkl,b.csv也有这些列。我是这些csv的关键列。jkl列在a.csv中为空,但在b.csv中填充。我想使用'i`作为键列将b.csv中的jk l列的值映射到a.csv文件我的建议是什么像这样(不使用defaultdict):a_file = "path/to/a.csv"b_file = "path/to/b.csv"# read from file a.csvwith open(a_file) as f: # skip headers f.next() # get first colum as keys keys = (line.split(',')[0] for line in f) # create empty dictionary:d = {}# read from file b.csvwith open(b_file) as f: # gather headers except first key header headers = f.next().split(',')[1:] # iterate lines for line in f: # gather the colums cols = line.strip().split(',') # check to make sure this key should be mapped. if cols[0] not in keys: continue # add key to dict d[cols[0]] = dict( # inner keys are the header names, values are columns (headers[idx], v) for idx, v in enumerate(cols[1:]))但是请注意,用于解析csv文件的是csv模块。