Python 以列表的形式获取输出

Python 以列表的形式获取输出,python,datetime,Python,Datetime,有一个集合列表,如下所示: expiry = [{'20180830', '20180928', '20181025'}, {'20180830', '20180927', '20181026'}, {'20180830', '20180927', '20181025'}] 和一个函数: def get_dte(Expiry): exp_date = datetime.strptime(Expiry, '%Y%m%d') dte = (e

有一个集合列表,如下所示:

expiry = [{'20180830', '20180928', '20181025'},
          {'20180830', '20180927', '20181026'},
          {'20180830', '20180927', '20181025'}]
和一个函数:

def get_dte(Expiry):
    exp_date = datetime.strptime(Expiry, '%Y%m%d')
    dte = (exp_date- datetime.now()).days
    return dte
如何以相同的输入形式获得函数的输出(集合列表)

产生:

[61, 90, 33, 61, 89, 34, 61, 89, 33]
…需要的是:

[{61, 90, 33}, {61, 89, 34}, {61, 89, 33}]

你只需要稍微修改一下你的理解力就可以了

试试看:

from datetime import datetime

expiry = [{'20180830', '20180928', '20181025'},
          {'20180830', '20180927', '20181026'},
          {'20180830', '20180927', '20181025'}]

def get_dte(Expiry):
    exp_date = datetime.strptime(Expiry, '%Y%m%d')
    dte = (exp_date- datetime.now()).days
    return dte

print( [{get_dte(i) for i in elem } for elem in expiry] )
[{89, 33, 62}, {33, 90, 61}, {89, 33, 61}]
输出:

from datetime import datetime

expiry = [{'20180830', '20180928', '20181025'},
          {'20180830', '20180927', '20181026'},
          {'20180830', '20180927', '20181025'}]

def get_dte(Expiry):
    exp_date = datetime.strptime(Expiry, '%Y%m%d')
    dte = (exp_date- datetime.now()).days
    return dte

print( [{get_dte(i) for i in elem } for elem in expiry] )
[{89, 33, 62}, {33, 90, 61}, {89, 33, 61}]

您需要分别迭代过期的每个元素:

>>> [{get_dte(j) for j in i} for i in expiry]
[{33, 62, 89}, {33, 61, 90}, {33, 61, 89}]

打印([{get_dte(i)for i in elem}for elem in expiration])
?输出应为目录列表或列表列表?集合列表(非目录)