Python 3.x 在给定当前项列表的情况下替换字典中的元素
我有一本字典,看起来像下面这本。我试图做的是找到缺少的月份,并将它们添加为一个值为Nan的新键Python 3.x 在给定当前项列表的情况下替换字典中的元素,python-3.x,dictionary,Python 3.x,Dictionary,我有一本字典,看起来像下面这本。我试图做的是找到缺少的月份,并将它们添加为一个值为Nan的新键 {'Congress': {'April': '5.902', 'August': '5.925', 'January': '5.881', 'February': '5.888', 'July': '5.920', 'June': '5.910', 'March': '5.896', 'May': '5.906', 'November': '5.942', 'Oc
{'Congress': {'April': '5.902',
'August': '5.925',
'January': '5.881',
'February': '5.888',
'July': '5.920',
'June': '5.910',
'March': '5.896',
'May': '5.906',
'November': '5.942',
'October': '5.938',
'September': '5.933'},
'Entity': {'April': '64.320',
'August': '64.642',
'December': '64.825',
'January': '63.965',
'February': '64.089',
'July': '64.604',
'June': '64.509',
'March': '64.221',
'May': '64.404',
'October': '64.757',
'September': '64.690'}}
在国会词典中,我们缺少12月,在实体词典中,我们缺少11月
到目前为止,我尝试创建一个名为months的列表,并对其进行迭代,以查找字典中哪些值不在列表中。但是,这似乎不起作用,因为当我尝试打印它时,它不会打印任何内容,因此它肯定不会添加键和值
list_of_months =['January','February','March','April','May','June','July','August','September','October','November','December']
for k, v in newd.items():
for x in v.keys():
if x not in list_of_months :
print(x)
预期产出应为:
{'Congress': {'April': '5.902',
'December': 'Nan' ---------------------> Missing value to be added
'August': '5.925',
'January': '5.881',
'February': '5.888',
'July': '5.920',
'June': '5.910',
'March': '5.896',
'May': '5.906',
'November': '5.942',
'October': '5.938',
'September': '5.933'},
'Entity': {'April': '64.320',
'November': 'Nan' ---------------------> Missing value to be added
'August': '64.642',
'December': '64.825',
'January': '63.965',
'February': '64.089',
'July': '64.604',
'June': '64.509',
'March': '64.221',
'May': '64.404',
'October': '64.757',
'September': '64.690'}}
有人能向我解释一下我做错了什么,有什么更好的方法可以检查当前月份并添加缺失的月份
谢谢使用
设置
差异来检查缺少的月份
Ex:
list_of_months ={'January','February','March','April','May','June','July','August','September','October','November','December'}
for k,v in data.items():
for i in list_of_months - set(v.keys()): # Check for missing Month
v[i] = 'Nan' # Add Month
print(data)
{'Congress': {'April': '5.902',
'August': '5.925',
'December': 'Nan',
'February': '5.888',
'January': '5.881',
'July': '5.920',
'June': '5.910',
'March': '5.896',
'May': '5.906',
'November': '5.942',
'October': '5.938',
'September': '5.933'},
'Entity': {'April': '64.320',
'August': '64.642',
'December': '64.825',
'February': '64.089',
'January': '63.965',
'July': '64.604',
'June': '64.509',
'March': '64.221',
'May': '64.404',
'November': 'Nan',
'October': '64.757',
'September': '64.690'}}
输出:
list_of_months ={'January','February','March','April','May','June','July','August','September','October','November','December'}
for k,v in data.items():
for i in list_of_months - set(v.keys()): # Check for missing Month
v[i] = 'Nan' # Add Month
print(data)
{'Congress': {'April': '5.902',
'August': '5.925',
'December': 'Nan',
'February': '5.888',
'January': '5.881',
'July': '5.920',
'June': '5.910',
'March': '5.896',
'May': '5.906',
'November': '5.942',
'October': '5.938',
'September': '5.933'},
'Entity': {'April': '64.320',
'August': '64.642',
'December': '64.825',
'February': '64.089',
'January': '63.965',
'July': '64.604',
'June': '64.509',
'March': '64.221',
'May': '64.404',
'November': 'Nan',
'October': '64.757',
'September': '64.690'}}
使用
set
difference检查缺少的月份
Ex:
list_of_months ={'January','February','March','April','May','June','July','August','September','October','November','December'}
for k,v in data.items():
for i in list_of_months - set(v.keys()): # Check for missing Month
v[i] = 'Nan' # Add Month
print(data)
{'Congress': {'April': '5.902',
'August': '5.925',
'December': 'Nan',
'February': '5.888',
'January': '5.881',
'July': '5.920',
'June': '5.910',
'March': '5.896',
'May': '5.906',
'November': '5.942',
'October': '5.938',
'September': '5.933'},
'Entity': {'April': '64.320',
'August': '64.642',
'December': '64.825',
'February': '64.089',
'January': '63.965',
'July': '64.604',
'June': '64.509',
'March': '64.221',
'May': '64.404',
'November': 'Nan',
'October': '64.757',
'September': '64.690'}}
输出:
list_of_months ={'January','February','March','April','May','June','July','August','September','October','November','December'}
for k,v in data.items():
for i in list_of_months - set(v.keys()): # Check for missing Month
v[i] = 'Nan' # Add Month
print(data)
{'Congress': {'April': '5.902',
'August': '5.925',
'December': 'Nan',
'February': '5.888',
'January': '5.881',
'July': '5.920',
'June': '5.910',
'March': '5.896',
'May': '5.906',
'November': '5.942',
'October': '5.938',
'September': '5.933'},
'Entity': {'April': '64.320',
'August': '64.642',
'December': '64.825',
'February': '64.089',
'January': '63.965',
'July': '64.604',
'June': '64.509',
'March': '64.221',
'May': '64.404',
'November': 'Nan',
'October': '64.757',
'September': '64.690'}}
给你。。。您可能需要对其进行一些修改,以便将其准确地用于您的用例 代码:
list_of_months ={'January','February','March','April','May','June','July','August','September','October','November','December'}
for k,v in data.items():
for i in list_of_months - set(v.keys()): # Check for missing Month
v[i] = 'Nan' # Add Month
print(data)
{'Congress': {'April': '5.902',
'August': '5.925',
'December': 'Nan',
'February': '5.888',
'January': '5.881',
'July': '5.920',
'June': '5.910',
'March': '5.896',
'May': '5.906',
'November': '5.942',
'October': '5.938',
'September': '5.933'},
'Entity': {'April': '64.320',
'August': '64.642',
'December': '64.825',
'February': '64.089',
'January': '63.965',
'July': '64.604',
'June': '64.509',
'March': '64.221',
'May': '64.404',
'November': 'Nan',
'October': '64.757',
'September': '64.690'}}
dt={'Congress':{'April':'5.902',
‘八月’:‘5.925’,
‘一月’:‘5.881’,
‘二月’:‘5.888’,
‘7月’:‘5.920’,
‘六月’:‘5.910’,
‘三月’:‘5.896’,
‘五月’:‘5.906’,
‘十一月’:‘5.942’,
‘十月’:‘5.938’,
‘九月’:‘5.933’},
‘实体’:{‘四月’:‘64.320’,
‘八月’:‘64.642’,
‘十二月’:‘64.825’,
‘一月’:‘63.965’,
‘二月’:‘64.089’,
‘七月’:‘64.604’,
‘六月’:‘64.509’,
‘三月’:‘64.221’,
“May”:“64.404”,
‘十月’:‘64.757’,
“九月”:“64.690”}
}
月份={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”,
“八月”、“九月”、“十月”、“十一月”、“十二月”}
def填充月份(字典:dict,replace:str=“NaN”)->dict:
"""
用一些替换字符串(默认值:NaN)填充缺少的月份。
Args:
字典:缺少月份的字典。
替换:为缺少的月份添加的值。
返回:
缺少月份和某些字符串值的字典。
"""
对于idx(月份-设置(dictionary.keys()):
字典[idx]=替换
返回字典
打印(填写月份(dt[“国会]))
打印(填写月份(dt[“实体”]))
给你。。。您可能需要对其进行一些修改,以便将其准确地用于您的用例
代码:
list_of_months ={'January','February','March','April','May','June','July','August','September','October','November','December'}
for k,v in data.items():
for i in list_of_months - set(v.keys()): # Check for missing Month
v[i] = 'Nan' # Add Month
print(data)
{'Congress': {'April': '5.902',
'August': '5.925',
'December': 'Nan',
'February': '5.888',
'January': '5.881',
'July': '5.920',
'June': '5.910',
'March': '5.896',
'May': '5.906',
'November': '5.942',
'October': '5.938',
'September': '5.933'},
'Entity': {'April': '64.320',
'August': '64.642',
'December': '64.825',
'February': '64.089',
'January': '63.965',
'July': '64.604',
'June': '64.509',
'March': '64.221',
'May': '64.404',
'November': 'Nan',
'October': '64.757',
'September': '64.690'}}
dt={'Congress':{'April':'5.902',
‘八月’:‘5.925’,
‘一月’:‘5.881’,
‘二月’:‘5.888’,
‘7月’:‘5.920’,
‘六月’:‘5.910’,
‘三月’:‘5.896’,
‘五月’:‘5.906’,
‘十一月’:‘5.942’,
‘十月’:‘5.938’,
‘九月’:‘5.933’},
‘实体’:{‘四月’:‘64.320’,
‘八月’:‘64.642’,
‘十二月’:‘64.825’,
‘一月’:‘63.965’,
‘二月’:‘64.089’,
‘七月’:‘64.604’,
‘六月’:‘64.509’,
‘三月’:‘64.221’,
“May”:“64.404”,
‘十月’:‘64.757’,
“九月”:“64.690”}
}
月份={“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”,
“八月”、“九月”、“十月”、“十一月”、“十二月”}
def填充月份(字典:dict,replace:str=“NaN”)->dict:
"""
用一些替换字符串(默认值:NaN)填充缺少的月份。
Args:
字典:缺少月份的字典。
替换:为缺少的月份添加的值。
返回:
缺少月份和某些字符串值的字典。
"""
对于idx(月份-设置(dictionary.keys()):
字典[idx]=替换
返回字典
打印(填写月份(dt[“国会]))
打印(填写月份(dt[“实体”]))
您共享的代码不会创建任何内容——它只会打印内部dict的键(如果没有)。请诚实地尝试解决问题,并将该尝试的代码作为示例共享。确保包含代码中的具体错误:“它不工作”不是报告问题的好方法。更多信息,和。您共享的代码没有创建任何内容——它只打印内部dict的键,如果它们不是。请诚实地尝试解决问题,并将该尝试的代码作为示例共享。确保包含代码中的具体错误:“它不工作”不是报告问题的好方法。更多信息请访问,和。