【发布时间】:2021-07-19 19:52:13
【问题描述】:
我有一个嵌套字典,其中包含日期及其对应的对象类型(不是编程中认为的对象),如下所示:
dict1 = {0: {'date': ['01', 'MAY', '14', '11MAY', '14', '18', 'MAY', '14'],
'objecttype': ['Table', 'Anything', 'Chair']},
1: {'date': ['12', 'MAY', '14', '12MAY14', '15MAY', '14'],
'objecttype': ['Cup', 'Chair', 'fan']},
2: {'date': ['05', 'MAY', '14', '13MAY14', '16MAY', '14'],
'objecttype': ['Home', 'Desk', 'Pencil']},
3: {'date': ['14', 'MAY', '14', '14MAY', '14', '04MAY14'],
'objecttype': ['Cup', 'Stationery', 'Book']},
4: {'date': ['15', 'MAY', '14', '15MAY14', '01', 'MAY', '14'],
'objecttype': ['Eraser', 'Pen', 'Notebook']}}
所有日期和对象都有唯一键,例如 0-4。
可以看出,大多数日期的格式都不正确,对我们来说,正确的格式是 [Day][Month][Year],如下所示:
2014 年 4 月 4 日
我解决这个问题的方法是使用正则表达式并循环两次日期。在第一次尝试中,我想查找所有日期值,其中我只找到这样的两个数字,例如 '04' 并将它们连接到列表中的下一个值,如果它只包含三个这样的字母 '可能'。完成此步骤后,dict 中的大多数日期值将如下所示 [Day][Month] 。
5 月 4 日
在下一个循环中,我想找到只有日期和月份的所有日期实例,并将它们连接到列表中的下一个值,该值应该是具有两位数的年份值,以便我们拥有这种格式的所有日期最终:
2014 年 4 月 4 日
最终的 dict 将如下所示:
dict1 = {0: {'date': ['01MAY14', '11MAY14', '18MAY14'],
'objecttype': ['Table', 'Anything', 'Chair']},
1: {'date': ['12MAY14', '12MAY14', '15MAY14'],
'objecttype': ['Cup', 'Chair', 'fan']},
2: {'date': ['05MAY14', '13MAY14', '16MAY14'],
'objecttype': ['Home', 'Desk', 'Pencil']},
3: {'date': ['14MAY14', '14MAY14', '04MAY14'],
'objecttype': ['Cup', 'Stationery', 'Book']},
4: {'date': ['15MAY14', '15MAY14', '01MAY14'],
'objecttype': ['Eraser', 'Pen', 'Notebook']}}
我在 python 中实现它时遇到了麻烦,如果有人可以帮助我,我将不胜感激。谢谢
【问题讨论】:
-
更新了我的答案。
标签: python python-3.x dictionary