根据第三个列表中的随机项目,从两个列表之一中选择一个随机项目
Choosing a random item from one of two lists, based on a random item from a third
我正在尝试 select 随机国家/地区的随机城市,使用以下代码:
COUNTRIES= ["NL", "NO"]
NL = [
"Assen", "Almere", "Leeuwarden", "Nijmegen", "Groningen",
"Maastricht", "Eindhoven", "Amsterdam", "Enschede", "Utrecht",
"Middelburg", "Rotterdam"
]
NO = [
"Fredrikstad", "Baerum", "Oslo", "Ringsaker", "Gjovik",
"Drammen", "Sandefjord", "Skien", "Arendal", "Kristiansand",
"Stavanger", "Bergen", "Forde", "Alesund", "Trondheim",
"Stjordal", "Bodo", "Tromso", "Alta"
]
CHOSEN_CITY = random.choice(random.choice(COUNTRIES))
print CHOSEN_CITY
但是,这只会给我 'L'
、'O'
或 N
之一。我在这里做错了什么?
试试这个
random.choice(NL + NO)
那不是 Python 的工作方式!一个列表中的字符串不是对另一个变量的引用,即使它们共享相同的名称。
NL = ["Assen", "Almere", "Leeuwarden"] # truncated for clarity
NO = ["Fredrikstad", "Baerum", "Oslo"]
countries = [NL, NO] # refer to variables, not just strings
chosen_city = random.choice(random.choice(countries))
print(chosen_city)
应该可以。简单地从两个附加列表中选择更清楚,但可能不适用于您的特定情况。
您正在随机选择一个国家,然后从每个字符串中随机选择一个字母。 Python 不是这样的。
更好的设置是将您的数据存储在字典中,如下所示。然后你可以选择一个随机国家(通过在字典中选择一个随机键)。然后您将使用该随机密钥选择一个随机城市。
import random
data = {
'NL': ["Assen", "Almere", "Leeuwarden", "Nijmegen", "Groningen", "Maastricht",
"Eindhoven", "Amsterdam", "Enschede", "Utrecht", "Middelburg", "Rotterdam"],
'NO': ["Fredrikstad", "Baerum", "Oslo", "Ringsaker", "Gjovik", "Drammen",
"Sandefjord", "Skien", "Arendal", "Kristiansand", "Stavanger", "Bergen",
"Forde", "Alesund", "Trondheim", "Stjordal", "Bodo", "Tromso", "Alta"]
}
random_country = random.choice(list(data.keys()))
random_city = random.choice(data[random_country])
print(random_country, random_city)
# NO Drammen
我正在尝试 select 随机国家/地区的随机城市,使用以下代码:
COUNTRIES= ["NL", "NO"]
NL = [
"Assen", "Almere", "Leeuwarden", "Nijmegen", "Groningen",
"Maastricht", "Eindhoven", "Amsterdam", "Enschede", "Utrecht",
"Middelburg", "Rotterdam"
]
NO = [
"Fredrikstad", "Baerum", "Oslo", "Ringsaker", "Gjovik",
"Drammen", "Sandefjord", "Skien", "Arendal", "Kristiansand",
"Stavanger", "Bergen", "Forde", "Alesund", "Trondheim",
"Stjordal", "Bodo", "Tromso", "Alta"
]
CHOSEN_CITY = random.choice(random.choice(COUNTRIES))
print CHOSEN_CITY
但是,这只会给我 'L'
、'O'
或 N
之一。我在这里做错了什么?
试试这个
random.choice(NL + NO)
那不是 Python 的工作方式!一个列表中的字符串不是对另一个变量的引用,即使它们共享相同的名称。
NL = ["Assen", "Almere", "Leeuwarden"] # truncated for clarity
NO = ["Fredrikstad", "Baerum", "Oslo"]
countries = [NL, NO] # refer to variables, not just strings
chosen_city = random.choice(random.choice(countries))
print(chosen_city)
应该可以。简单地从两个附加列表中选择更清楚,但可能不适用于您的特定情况。
您正在随机选择一个国家,然后从每个字符串中随机选择一个字母。 Python 不是这样的。
更好的设置是将您的数据存储在字典中,如下所示。然后你可以选择一个随机国家(通过在字典中选择一个随机键)。然后您将使用该随机密钥选择一个随机城市。
import random
data = {
'NL': ["Assen", "Almere", "Leeuwarden", "Nijmegen", "Groningen", "Maastricht",
"Eindhoven", "Amsterdam", "Enschede", "Utrecht", "Middelburg", "Rotterdam"],
'NO': ["Fredrikstad", "Baerum", "Oslo", "Ringsaker", "Gjovik", "Drammen",
"Sandefjord", "Skien", "Arendal", "Kristiansand", "Stavanger", "Bergen",
"Forde", "Alesund", "Trondheim", "Stjordal", "Bodo", "Tromso", "Alta"]
}
random_country = random.choice(list(data.keys()))
random_city = random.choice(data[random_country])
print(random_country, random_city)
# NO Drammen