Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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_List_Python 2.7_Dictionary_List Comprehension - Fatal编程技术网

Python 循环遍历字典中嵌入的列表列表中的所有项

Python 循环遍历字典中嵌入的列表列表中的所有项,python,list,python-2.7,dictionary,list-comprehension,Python,List,Python 2.7,Dictionary,List Comprehension,我在字典的列表中有字符串形式的日期。我编写了一个函数将日期字符串转换为日期时间。我想将字典中的所有字符串日期转换为日期时间。我的代码只转换每个表中的第一个子列表,无法获取其他子列表。最好的方法是什么 import datetime def parse_date(datestamp): try: return datetime.datetime.strptime(str(datestamp)[:10], '%Y-%m-%d') except Value

我在字典的列表中有字符串形式的日期。我编写了一个函数将日期字符串转换为日期时间。我想将字典中的所有字符串日期转换为日期时间。我的代码只转换每个表中的第一个子列表,无法获取其他子列表。最好的方法是什么

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]

这就是
[0]
所做的。在y y[tb]([task])中使用y,例如<代码> > y,这是很好的,但是把列表的列表组合成一个不是你想要的单个LISTIF,你可以考虑添加一个你正在寻找的输出的例子。抱歉,忽略我说的关于移除括号的话,我太匆忙了。正确的方法可能是使用itertools在一行中完成它。@Hooked是的<代码>itertools是关键。Python已经有了所有你想要的函数作为库了,这不是很酷吗?你可以不用itertools来实现它,你只需要颠倒顺序<代码>打印[解析我的字典中的键的日期(日期)以获取我的字典中的数据[键][“日期”]以获取数据中的日期]。看见