说,我有一本字典Python的字典,使与它的值范围相关联,并返回他们
D = {'A':0.25,'C':0.25,'G':0.25,'T':0.25}
字典值的总和将始终是一个。我想使范围为d每个键,这将是如下:
的第一个关键:
(0, D[FirstKey])
。第二个键
(SecondRangeParameterOfFirstKey, SecondRangeParameterOfFirstKey + ValueOfSecondKey)
即(0.25,0.50)
。第三个关键是
(SecondRangeParameterOfSecondKey,SecondRangeParameterOfSecondKey + ValueOfSecondKey)
即(0.50,0.75)
。第四把钥匙的范围是
(0.75,1)
。
有一点是最后一个键的范围的最后一个参数总是1,即所有值的总和。
我生成一个0和1之间的随机数。我需要返回随机浮点数后面的键。例如,对于字典D的给定顺序,如果我生成0.63
,那么我必须返回第三个关键字G,因为它的范围是(0.50,0.75)
。由于字典没有排序,所以我必须按照字典的顺序和返回字典顺序返回键来计算范围。到目前为止,我编码这个问题如下:
import random
def W(D):
vv = 0
f = 0
mer = ''
ran = random.uniform(0,1)
DI = D.items()
for k,v in DI:
mer = ''
if (ran >= f) and (ran < D[k]+vv):
mer = k
vv += v
return mer
我的功能不会返回时,浮子产生的下降第三键的范围是(0.50,0.75)
第三键,返回键第四代替。所以,如果你想保持一定的秩序,你将需要一个OrderedDict
,这将发现的基础上增加了对键顺序的范围的范围内的关键
你只产生一个随机数?此外,字符串是无序的,所以除非您对数据进行排序,否则没有第一个键的想法 –
每次运行此函数时,我只生成一个随机的浮点数。 – Yousuf
所以你想要在随机浮动值下的最接近的值?为什么这些值不是作为上限存储的,你对第一个关键点的想法是什么? –