编辑:此处更新了代码示例,https://repl.it/@HexKiz/FussyQuietPetabyte
import datetime
emp_history = { 1:['Vox',datetime.datetime(2001,1,2,0,1),datetime.datetime(2002,1,2,0,1),1.0], 2:['telly',datetime.datetime(2001,1,2,0,1),datetime.datetime(2002,1,2,0,1),1.0] }
def print_all(dict_emp_history): #从1-> last排序键并打印所有记录 对于x中的sorted(dict_emp_history.keys()):
# Get Tuple Values
name = ([x[0] for x in dict_emp_history.values()])
start = ([x[1] for x in dict_emp_history.values()])
start = datetime.datetime.strptime(str(start), '%Y%M%d')
end = ([x[2] for x in dict_emp_history.values()])
total = ([x[3] for x in dict_emp_history.values()])
print('---------------')
print('This is record: {}'.format(x))
print(dict_emp_history[x])
print('{} -Start: {} -End: {} -Total: {}'.format(name, start, end, total))
print('---------------')
def main(): print_all(emp_history)
main()
忽略了从列表中检索值将其作为列表项返回的问题。 有问题的值是datetime对象。datetime.datetime(2001,1,8,0,9)。
我需要做的是检索datetime对象并将其打印为字符串,这样看起来像2018.01.20这样。我知道您可以使用strftime,但是我不断收到错误提示,该值不是datetime对象。
这是否意味着我必须将列表转换为字符串,然后再转换为日期时间对象?
当然必须有更好的方法。
import datetime
td = {
1: ('hex', datetime.datetime(2001, 1, 8, 0, 9), datetime.datetime(2002, 1, 8, 0, 5), 0.9999923896499239),
2: ('hex', datetime.datetime(2001, 1, 8, 0, 9), datetime.datetime(2002, 1, 8, 0, 5), 0.9999923896499239)
}
print(td)
value = ([x[2] for x in td.values()])
print(value)
print(type(value))
{1: ('hex', datetime.datetime(2001, 1, 8, 0, 9), datetime.datetime(2002, 1, 8, 0, 5), 0.9999923896499239), 2: ('hex', datetime.datetime(2001, 1, 8, 0, 9), datetime.datetime(2002, 1, 8, 0, 5), 0.9999923896499239)}
[datetime.datetime(2002, 1, 8, 0, 5), datetime.datetime(2002, 1, 8, 0, 5)]
<class 'list'>
我希望var命名值的类型为datetime对象类型。
答案 0 :(得分:0)
您正在将列表理解的结果分配给 value 。正如Tomothy32在其评论中指出的那样, value 是日期时间对象的列表。
关于从列表中检索日期时间对象并将其打印为字符串的方法,以下代码应该可以完成您的期望:
value = ([str(x[2]) for x in td.values()])
上面的输出是:
['2002-01-08 00:05:00', '2002-01-08 00:05:00']
希望这会有所帮助。