根据变量潜水

2024-10-02 08:18:32 发布

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

我有一段代码(由stackoverflow的人编写),它根据时间变量来分隔条件:

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 

但是,它似乎总是为第一个字符串选择相同的变量。例如,如果我在需要19分钟变量的地方运行这个脚本5次,它总是以相同的方式拆分它们。我想要的是随机的:

所以有时它选择因子4,有时它选择因子1和3。你知道吗

先谢谢你


Tags: 代码inforstringtime时间items条件
2条回答

我想你可以洗牌一下:

import random

for k, v in sorted(factors.items(), key=lambda k: random.random()):

把我的评论变成了答案。你知道吗

from random import randint
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 in list(factors.keys())[randint(0, 1000)%len(factors)-1]:
    v = factors[k]
    time = int(v.split(" ")[0])
    if total+time <= wantedTime:
        total +=time
        String_1[k]=v
    else:
        String_2[k]=v

相关问题 更多 >

    热门问题