我想取一个随机字,这是一个字符串,并将该字符串转换为变量列表,每个字母都是一个变量。然后将每个变量相乘以得到一个值。例如
a, b, c, d = 2, 3, 5, 7
word = "bad"
wrd = list(word)
wrd会给我wrd =('b','a','d')
但我想要的是wrd =(b,a,d)=(3,2,7),以便我可以按照的方式做点什么
value = wrd[0]*wrd[1]*wrd[2]
我还需要值= 42才能与“坏”相关
由于
答案 0 :(得分:4)
不要生成变量名称;改为使用字典:
values = {'a': 2, 'b': 3, 'c': 5, 'd': 7}
value = 1
for char in word:
value *= values[char]
在字典中查找密钥比在本地或全局名称空间中动态查找名称要简单得多。
演示:
>>> values = {'a': 2, 'b': 3, 'c': 5, 'd': 7}
>>> word = 'bad'
>>> value = 1
>>> for char in word:
... value *= values[char]
...
>>> value
42
您也可以生成从素数到字母的逆映射:
inverse = {prime: char for char, prime in values.items()}
因此,如果计算值的素因子,您至少可以重建用于给定值的字符(但不是订单)。