[英]Appending key, values to a nested dictionary in Python
我在 CSV 中有一些數據,下面是示例提取,我想將此數據添加到嵌套字典中。
Qgen 1 Male
Qgen 2 Female
Qageband 1 18-24
Qageband 2 25-34
Qageband 3 35+
問題:我遇到的問題是只存儲最后一個鍵值,我希望將它們全部包含在內。 我對 Python 還很陌生,我知道為什么會出現問題,但無法增加 append 所有鍵值。
目前的最終結果如下:
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
package 中的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+
'''
其次,迭代數據。 默認字典的值是字典。 (這使我們能夠創建字典字典,而無需檢查字典是否存在,如果需要則創建它。)
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+'}})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.