2017-02-17 91 views
-1

我正在写一个包装函数来执行其他几个函数。函数参数到python字典

作为这个问题的简化,假设只有包装函数和函数calc_days返回开始日期和结束日期之间的天数。您还可以将开始日期和结束日期参数传递给开始日期和结束日期参数,此时函数将返回开始日期和结束日期的每种可能组合的天数。

def wrapper(startd,endd): 
    return calc_days(startd,endd) 

现在我想给该功能的用户可能通过编辑的CSV文件,该文件会像这样提供的输入参数:

startd;01/01/1900 
startd;01/01/1950 
endd;01/01/2000 

所以包装会成为什么像这样(用熊猫读取CSV):

def wrapper(csv_file, startd, endd): 
    if os.path.isfile(csv_file): 
    input_param = pd.read_csv(csv_file, ...) 
    input_dict = {i: list(v) for i,v in input_param.groupby(0)[1]} 
    else: 
    input_dict = {'date1': date1, 'date2': date2} 
    return calc_date(input_dict['date1'], input_dict['date2']) 

我做的东西,GROUPBY,因为它会在我的字典开始日期创建列表:

{startdd : [01/01/1900,01/01/1950]} 

现在我的问题:在实际的设置我没有2输入参数,但我有大约30输入参数。因此,它希望以输入参数(startdd)作为键和输入参数的内容([01/01/1900,01/01/1950])作为值动态建立字典。

除了手动创建每个输入参数外,是否有安全的方式来动态构建此字典?

+1

我不确定我是否理解100%,但是没有“** kwds”符合您的账单? –

+0

你的问题不是现实...它的一个长长的故事 – Umair

回答

0

是的,this StackOverflow question提供您需要的大部分信息。您必须遍历索引和值来将所有内容绑定在一起。

def insertintoData(aItem, bItem, cDict): 
    if not aItem in cDict: 
     cDict[aItem] = [(bItem)] 
    else: 
     cDict[aItem].append((bItem)) 

input_dict = {} 
for i in input_param: 
    insertintoData(i[0], i[1], input_dict) 

GROUPBY会由if/else语句的功能来处理。