遍历嵌入字典的列表列表中的所有项目
Loop through all items in a list of list embedded in dictionary
我在字典的列表列表中有字符串形式的日期。我编写了一个将日期字符串转换为日期时间的函数。我想将我字典中的所有字符串日期转换为日期时间。我的代码只转换每个 table 中的第一个子列表,它无法获取其他子列表。执行此操作的最佳方法是什么?
import datetime
def parse_date(datestamp):
try:
return datetime.datetime.strptime(str(datestamp)[:10], '%Y-%m-%d')
except ValueError:
pass
My_Dict = {
'Value1': {'Dates' : [['2014-10-14', 10, '2014-10-13', '2014-11-03'], ['2014-10-14', '2014-10-14', '2014-11-03']]},
'Value2': {'Dates' : [['2014-10-14', '2014-10-13', '2014-11-03'], ['2014-10-14', '2014-10-14', '2014-11-03']]},
}
for tbl in My_Dict:
print [parse_date(x) for x in My_Dict[tbl]['Dates'][0]]
这是正确扩展嵌套列表的问题:
for key in My_Dict:
for data in My_Dict[key]["Dates"]:
for date in data:
print date, parse_date(date)
给出:
2014-10-14 2014-10-14 00:00:00
2014-10-13 2014-10-13 00:00:00
2014-11-03 2014-11-03 00:00:00
2014-10-14 2014-10-14 00:00:00
2014-10-14 2014-10-14 00:00:00
2014-11-03 2014-11-03 00:00:00
2014-10-14 2014-10-14 00:00:00
10 None
2014-10-13 2014-10-13 00:00:00
2014-11-03 2014-11-03 00:00:00
2014-10-14 2014-10-14 00:00:00
2014-10-14 2014-10-14 00:00:00
2014-11-03 2014-11-03 00:00:00
要将其放入单个平面列表中,您可以执行以下操作:
print [parse_date(date) for key in My_Dict for data in My_Dict[key]["Dates"] for date in data]
但我认为三个循环更容易阅读!
将您的列表理解嵌套为
print [[parse_date(x) for x in i] for i in My_Dict[tbl]['Dates']]
但是如果你想要一个平面列表,那么你可以尝试提到的,即
print [parse_date(date) for key in My_Dict for data in My_Dict[key]["Dates"] for date in data]
我在字典的列表列表中有字符串形式的日期。我编写了一个将日期字符串转换为日期时间的函数。我想将我字典中的所有字符串日期转换为日期时间。我的代码只转换每个 table 中的第一个子列表,它无法获取其他子列表。执行此操作的最佳方法是什么?
import datetime
def parse_date(datestamp):
try:
return datetime.datetime.strptime(str(datestamp)[:10], '%Y-%m-%d')
except ValueError:
pass
My_Dict = {
'Value1': {'Dates' : [['2014-10-14', 10, '2014-10-13', '2014-11-03'], ['2014-10-14', '2014-10-14', '2014-11-03']]},
'Value2': {'Dates' : [['2014-10-14', '2014-10-13', '2014-11-03'], ['2014-10-14', '2014-10-14', '2014-11-03']]},
}
for tbl in My_Dict:
print [parse_date(x) for x in My_Dict[tbl]['Dates'][0]]
这是正确扩展嵌套列表的问题:
for key in My_Dict:
for data in My_Dict[key]["Dates"]:
for date in data:
print date, parse_date(date)
给出:
2014-10-14 2014-10-14 00:00:00
2014-10-13 2014-10-13 00:00:00
2014-11-03 2014-11-03 00:00:00
2014-10-14 2014-10-14 00:00:00
2014-10-14 2014-10-14 00:00:00
2014-11-03 2014-11-03 00:00:00
2014-10-14 2014-10-14 00:00:00
10 None
2014-10-13 2014-10-13 00:00:00
2014-11-03 2014-11-03 00:00:00
2014-10-14 2014-10-14 00:00:00
2014-10-14 2014-10-14 00:00:00
2014-11-03 2014-11-03 00:00:00
要将其放入单个平面列表中,您可以执行以下操作:
print [parse_date(date) for key in My_Dict for data in My_Dict[key]["Dates"] for date in data]
但我认为三个循环更容易阅读!
将您的列表理解嵌套为
print [[parse_date(x) for x in i] for i in My_Dict[tbl]['Dates']]
但是如果你想要一个平面列表,那么你可以尝试
print [parse_date(date) for key in My_Dict for data in My_Dict[key]["Dates"] for date in data]