Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带年份键的列表中的词典词典词典_Python - Fatal编程技术网

Python 带年份键的列表中的词典词典词典

Python 带年份键的列表中的词典词典词典,python,Python,我有这样一个列表: [['2014', 'MALE', 'WHITE NON HISPANIC', 'Zachary', '90', '39'], ['2014', 'MALE', 'WHITE NON HISPANIC', 'Zev', '49', '65']] boy_names = {row[0]:{i:row[3]} for i,row in enumerate(records) if row[1]=='MALE'} 我想在字典中转换如下: {{2012: {1: 'David',

我有这样一个列表:

[['2014', 'MALE', 'WHITE NON HISPANIC', 'Zachary', '90', '39'], 
['2014', 'MALE', 'WHITE NON HISPANIC', 'Zev', '49', '65']]
boy_names = {row[0]:{i:row[3]} for i,row in enumerate(records) if row[1]=='MALE'}
我想在字典中转换如下:

{{2012: {1: 'David',
  2: 'Joseph',
  3: 'Michael',
  4: 'Moshe'},
2013: {1: 'David',
  2: 'Joseph',
  3: 'Michael',
  4: 'Moshe'},
我试着做这样一个列表:

[['2014', 'MALE', 'WHITE NON HISPANIC', 'Zachary', '90', '39'], 
['2014', 'MALE', 'WHITE NON HISPANIC', 'Zev', '49', '65']]
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'}}
如果我是对的,我想我是从enumerate by the year键中获取最后一个值及其行号,但不知道如何解决它。

我认为您需要

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'}}

您可以使用年份键下子目录的长度来计算当前年份下子目录的下一个增量数字键。使用
dict.setdefault
方法将新键的值默认为空dict:

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

基于“演示”输入的dict
[['2014'、'男性'、'非西班牙裔白人'、'扎卡里'、'90'、'39']、['2014'、'男性'、'非西班牙裔白人'、'Zev'、'49'、'65']]]
不知道您的意思。您不能在此处使用dict理解,因为您正在向沿途构建的键添加项。您必须执行循环,但a将生成干净的代码。您知道为什么我在选择像“boy_names[2014].keys()”这样的键时出错吗?这是因为年份是输入中的字符串,而您希望它们是输出中的整数。我已经更新了答案,这样年份就可以转换成整数了!谢谢!!也谢谢你,拉凯什!