Python:列表中str的双重随机化

时间:2018-11-02 16:31:35

标签: python random

我想接收随机列表值。在第一步中,我想接收随机语言代码,并在第二步中给出该代码,在第一步中,我想从基于随机选择的语言的列表中接收随机值:

import random
lang = ["lang_fr", "lang_en"]
lang_choice = random.choice(lang)
print(lang_choice)

lang_fr = ["fr1", "fr2", "fr3"]
lang_en = ["en1", "en2", "en3"]
lang_choice_no = random.choice(lang_choice)
print(lang_choice_no)

不幸的是,输出只是两个单词enfr中的一个字符,例如e。但是它不会返回(随机),例如。 en3。我该怎么解决?

2 个答案:

答案 0 :(得分:4)

创建一个字典,将您的语言选择作为键,将可能的第二选择作为值,然后从基于键的值中进行选择:

>>> lang = ["fr", "en"]
>>> lang_choice = random.choice(lang)
>>> lang_fr = ["fr1", "fr2", "fr3"]
>>> lang_en = ["en1", "en2", "en3"]
>>> lang_dict = {'fr':lang_fr, 'en':lang_en}
>>> lang_choice_no = random.choice(lang_dict[lang_choice])
>>> print(lang_choice_no)
'en1'

答案 1 :(得分:0)

所以您在这里首先要让python从列表lang返回随机选择。是的。它返回一个字符串,例如"fr"

然后,您稍后要求它从变量lang_choice返回随机选择,该变量是一个随机选择(因此是一个字符串),因此它从先前选择返回一个随机字符。

您能解释一下您在第2步中尝试做的事情吗?您想从列表之一中选择一个随机值?还是什么?

import random
lang = ["fr", "en"]
lang_choice = random.choice(lang)

if lang_choice == "fr":
    languages = ["fr1", "fr2", "fr3"]
elif lang_choice == "en":
    languages = ["en1", "en2", "en3"]

lang_choice_no = random.choice(languages)

print(lang_choice_no)