Python 3.x 字典列表集理解计算

Python 3.x 字典列表集理解计算,python-3.x,list,datetime,dictionary,Python 3.x,List,Datetime,Dictionary,我的数据结构是一个目录列表。我想对某些键的值运行一个函数,然后只输出一定数量的字典作为结果 from datetime import datetime from dateutil.parser import parse today = '05/17/18' adict = [{'taskid':1,'desc':'task1','complexity':5,'dl':'05/28/18'},{'taskid':2,'desc':'task2','complexity':3,'dl':'05/2

我的数据结构是一个目录列表。我想对某些键的值运行一个函数,然后只输出一定数量的字典作为结果

from datetime import datetime
from dateutil.parser import parse

today = '05/17/18'
adict = [{'taskid':1,'desc':'task1','complexity':5,'dl':'05/28/18'},{'taskid':2,'desc':'task2','complexity':3,'dl':'05/20/18'},
         {'taskid':3,'desc':'task3','complexity':1,'dl':'05/25/18'}]

def conv_tm(t):
    return datetime.strptime(t,'%m/%d/%y')

def days(obj):
    day = conv_tm(today)
    dl = conv_tm(obj)
    dur = (dl-day).days
    if dur <0:
        dur = 1
    return dur
现在,我需要做两件事:1)将此列表压缩回'dl'键,2)返回或打印(随机)一组2个dict,不改变原始dict,可能是这样的:

{'taskid':1,'desc':task1,'dl':8,'complexity':5}
{'taskid':3,'desc':task3,'dl':8,'complexity':1}

干杯

您可以像这样直接制作新的口述:

new_dicts = [{**d, 'dl': days(d['dl'])} for d in adict]
如果您单独需要VAL,也可以使用它来执行此操作:

new_dicts = [{**d, 'dl': v} for d, v in zip(adict, vals)]

这是一个非常简单的方法!我不知道你能把字典压缩成那样-非常有用,谢谢
new_dicts = [{**d, 'dl': v} for d, v in zip(adict, vals)]