簡體   English   中英

帶有年份鍵的列表列表中的詞典詞典

[英]Dictionary of dictionaries from list of lists with year keys

我有一個這樣的列表列表:

[['2014', 'MALE', 'WHITE NON HISPANIC', 'Zachary', '90', '39'], 
['2014', 'MALE', 'WHITE NON HISPANIC', 'Zev', '49', '65']]

我想在這樣的字典中轉換:

{{2012: {1: 'David',
  2: 'Joseph',
  3: 'Michael',
  4: 'Moshe'},
2013: {1: 'David',
  2: 'Joseph',
  3: 'Michael',
  4: 'Moshe'},

我正在嘗試像這樣進行列表理解:

boy_names = {row[0]:{i:row[3]} for i,row in enumerate(records) if row[1]=='MALE'}

但我得到的結果是這樣的:

{'2011': {7851: 'Zev'}, '2012': {9855: 'Zev'}, 
'2013': {11886: 'Zev'}, '2014': {13961: 'Zev'}}

如果我是對的,我想我是通過年份鍵從枚舉中獲取最后一個值及其行號,但不知道如何解決它。

我相信你需要

data = [['2014', 'MALE', 'WHITE NON HISPANIC', 'Zachary', '90', '39'], 
['2014', 'MALE', 'WHITE NON HISPANIC', 'Zev', '49', '65']]

result = {}
for i in data:           #Iterate sub-list
    result.setdefault(i[0], []).append(i[3])   #Form DICT
    
result = {k: dict(enumerate(v, 1)) for k, v in result.items()}   #Use enumerate to get index number
print(result)
# {'2014': {1: 'Zachary', 2: 'Zev'}}

可以根據年份key下sub-dict的長度來計算當前年份下sub-dict的下一個遞增數字鍵。 使用dict.setdefault方法將新鍵的值默認為空字典:

boy_names = {}
for year, _, _, name, _, _ in records:
    record = boy_names.setdefault(int(year), {})
    record[len(record) + 1] = name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM