Random List choices in python

2019-07-04 03:32发布

问题:

Is there a way to pass a variable to the choice() function for a list. I have a bunch of lists and I want to randomly select from one list and then use the string that is returned to select from a list that has that string name.

A = ['1','2','3']

print choice (A) - this gets me a random choice from the list

but I want to to store the choice as a variable and use it to call another list

A = ['1','2','3']
1 = ['A','B','C']

Var1 = choice (A)

print choice (Var1) *** this is my problem, how do I pass a variable to the choice function

Thanks for the help!

回答1:

In Python, you can do this using references.

A = [1, 2, 3]
B = [4, 5, 6]
C = [7, 8, 9]
MasterList = [A, B, C]

whichList = choice(MasterList)
print choice(whichList)

Note that A, B, C are names of previously assigned variables, instead of quoted strings. If you ever find yourself using quoted names to refer to variables, there's usually a better way to do whatever you're trying to do.



回答2:

some_list = { 'A': ['1','2','3'],
    'B': [some_other_list],
    'C': [the_third_list]
}
var1= choice( ['A', 'B', 'C'] ) # better: some_list.keys()
print( choice (some_list[var1])

"If you ever find yourself using quoted names to refer to variables, there's usually a better way to do whatever you're trying to do."

90% of the time, you should be using a dictionary. The other 10% of the time, you need to stop what you're doing entirely.