基于变量划分python中的列表

时间:2014-02-09 17:38:40

标签: python

我正在尝试根据时间拆分python字符串。

我有几个与它们相关的变量:

因子1 = 10分钟

因子2 = 2分钟

因子3 = 8分钟

因子4 = 20分钟

因子5 = 7分钟

我希望能够让python根据时间将因子分成2个子串。例如,我只有19分钟所以我希望python将我的字符串分成:

string 1 = [“factor 1”,“factor 2”,“factor 5”]

字符串2将具有剩余因子。

我希望能够给python一个时间,并为它吐出一个最接近这个时间的字符串。

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:2)

好的,这段代码刚写完,你可以尝试一下:

我想你使用这样的变量:

factors = {"factor 1" : "10 minutes",
"factor 2" : "2 minutes",
"factor 3" : "8 minutes",
"factor 4" : "20 minutes",
"factor 5" : "7 minutes"
}

wantedTime = 19;
String_1={}
String_2={}
total = 0
for k,v in factors.items():## or factors.iteritems()
    time = int(v.split(" ")[0])
    if total+time <= wantedTime:
        total +=time
        String_1[k]=v
    else:
        String_2[k]=v

答案 1 :(得分:2)

看起来你想要时间总和等于19的组合。你可能想看看itertools

import itertools
factor_list=['factor 1 = 10 minutes',
    'factor 2 = 2 minutes',
    'factor 3 = 8 minutes',
    'factor 4 = 20 minutes',
    'factor 5 = 7 minutes']
resultlist=[]
for r in range(len(factor_list)):
    for factor in itertools.combinations(factor_list, r):
        if sum([int(item[item.index('=')+2:item.index(' minutes')]) for item in factor])==19:
            print factor

('factor 1 = 10 minutes', 'factor 2 = 2 minutes', 'factor 5 = 7 minutes')