python-3.x - 在给定当前项目列表的情况下替换字典Python中的元素
问题描述
我有一本字典,如下所示。我要做的是找出缺少的月份,并将它们添加为值为 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',
'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'}}
在国会词典中我们缺少十二月,而在实体词典中我们缺少十一月。
到目前为止,我尝试的是创建一个名为 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'}}
有人可以向我解释我做错了什么以及检查当前月份并添加缺少的月份的更好方法是什么?
谢谢
解决方案
给你……你可能需要稍微修改一下,以便将它准确地用于你的用例。
代码:
dt = {'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'}
}
months = {"January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"}
def fill_months(dictionary: dict, replace: str = "NaN") -> dict:
"""
Fill missing months with some replacement string (default: NaN).
Args:
dictionary: Dictionary which has the missing months.
replace: Values to be added for the missing months.
Returns:
Dictionary with missing month and some string value.
"""
for idx in (months - set(dictionary.keys())):
dictionary[idx] = replace
return dictionary
print(fill_months(dt["Congress"]))
print(fill_months(dt["Entity"]))
推荐阅读
- javascript - 从 ruby on rails 视图调用 javascript 函数
- python - 如何访问 mediawiki 中的表格
- sql - 备份表的动态变量名称
- accelerated-mobile-page - 通过 javascript 使 AMP 页面可被发现
- php - 将 Order By 与 Union 结合使用 - SQL 语句
- javascript - Google Chrome 使用 javascript fetch 将 GET 方法更改为 OPTIONS
- ios - 如何防止多个用户在应用内购买时使用相同的 Apple ID
- javascript - php $_POST 使用javascript调用php函数时返回空
- ajax - ajax查询不传递页面数据laravel 5.6
- java - 处理应用内 WiFi 状态的定期检查