我在CSV中有一些数据,下面是示例摘录,我想把这些数据添加到嵌套字典中。
Qgen 1 Male
Qgen 2 Female
Qageband 1 18-24
Qageband 2 25-34
Qageband 3 35+
问题:我的问题是只存储了最后一个键值,我希望所有的键值都包括在内。 我对Python相当陌生,我知道为什么会出现这个问题,但是我还不能递增和追加所有的键值。
当前最终结果如下:
ExampleDict = {'Qgen': {'Precodes':{'2':'Male'}, 'qtext':'What is your gender?'},
'Qageband': {'Precodes':{'3':'35+'}, 'qtext':'How old are you?'}
最终结果我要求:
ExampleDict = {'Qgen': {'Precodes':{'1':'Male', '2':'Male'}, 'qtext':'What is your gender?'},
'Qageband': {'Precodes':{'1':'18-24', '2':'25-34', '3':'35+'}, 'qtext':'How old are you?'}
代码:
import csv
####### READ IN PRECODES ###########
f=open('LabelsImport_ShortVersion.csv','r')
reader = csv.reader(f)
ExampleDict = {}
ListOfVars=['Qgen','Qageband ']
for row in reader:
if key in ListOfVars:
ExampleDict[row[0]]['Precodes']={}
ExampleDict[row[0]]['Precodes'].update({row[1]:row[2]})
print (ExampleDict)
我很感激你提供的任何帮助。
下面是一种方法,使用内置collections
包中的defaultdict
:
首先,导入包并设置数据:
from collections import defaultdict
from io import StringIO
data = '''Qgen 1 Male
Qgen 2 Female
Qageband 1 18-24
Qageband 2 25-34
Qageband 3 35+
'''
第二,对数据进行迭代。 默认的dict的值是字典。 (这使我们能够创建一个字典的字典,而无需检查是否存在dict,如果需要就创建dict.)
dd = defaultdict(dict)
for line in StringIO(data):
key_1, key_2, val = line.rstrip('\n').split(' ')
dd[key_1][key_2] = val
下面是它的样子:
dd
defaultdict(dict,
{'Qgen': {'1': 'Male', '2': 'Female'},
'Qageband': {'1': '18-24', '2': '25-34', '3': '35+'}})