【发布时间】:2016-10-17 05:09:11
【问题描述】:
我有四个来自用户的输入值,如下所示:
numbers[1, 2]
numbersLetters={'E': 1,'K': 2}
RandomFrequency="0.5"
在这里,我的目标是随机化数字列表并获得大于 0.5 的随机数。
然后,从 numbersLetters 字典中获取选择的随机 no 的字母。
最后,将所有匹配的随机 no 以及相应的字母附加到另一个列表的列表中的单个元组中。
预期的输出是这样的:
[[('1', 'E'), ('2', 'K')]]
我得到了什么:
[[('1', 'E')], [('2', 'K')]]
我的脚本
import random
def randomMutation(numbers,numbersLetters,MF):
mut=[]
for res,pos in numbersLetters.iteritems():
r = random.choice([x for x in numbers if x > MF])
if pos==r:
fp=int(pos)-1
mut.append([tuple(str(pos)+res)])
print mut
if __name__ == '__main__':
randomMutation([1, 2],{'E': 1,'K': 2},"0.5")
我得到了答案:
import random
def randomMutation(numbers,numbersLetters,MF):
mut=[]
for res,pos in numbersLetters.iteritems():
r = random.choice([x for x in numbers if x > MF])
if pos==r:
fp=int(pos)-1
mut.append((tuple(str(pos)+res)))#changes
if not mut:
print "The possibility of random positions is not available for given thresold value ( > "+ str(MF)+")"
else:
mutation_combinations = chain.from_iterable([list(combinations([mut], 1))])
if __name__ == '__main__':
randomMutation([1, 2],{'E': 1,'K': 2},"0.5")
【问题讨论】:
-
为什么列表里面有元组?为什么不
[('1', 'E'), ('2', 'K')]? -
如果
MF是一个字符串,你的x > MF测试永远不会通过,因为Python 2 总是将数字排在其他类型之前(所以2 > "0.5"总是false)。你确定你没有传入0.5没有引号? -
是的,我没有通过,这里我只是举个例子。谢谢
-
我想把它放在嵌套列表中,因为稍后我想根据 tubles 列表进行提取。
标签: python list dictionary random tuples