以列表列表的形式获取输出

2024-05-16 04:06:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

如何以相同的输入形式获得函数的输出(集合列表)?你知道吗

[get_dte(i) for elem in expiry for i in elem]

产生:

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

…需要的是:

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

Tags: 函数in列表forgetdatetimedatedef
2条回答

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

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

你只需要稍微修改一下你的清单。你知道吗

试试:

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}]

相关问题 更多 >