从两个列表中选择一个随机项,基于第三个列表中的一个随机项

2024-09-29 02:22:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图选择一个随机国家的随机城市,使用以下代码:

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'或{}中的一个。我做错什么了?在


Tags: no代码citynlrandom国家countrieschosen
3条回答

试试这个

random.choice(NL + NO)

你选择一个随机的国家,然后从每个字符串中随机选择一个字母。Python不是这样工作的。在

更好的设置是将数据存储在字典中,如下所示。然后可以选择一个随机的国家(通过在dict中选择一个随机键)。然后使用随机键选择一个随机城市。在

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

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)

应该行得通。简单地从两个附加的列表中选择会更清楚,但在您的特定场景中可能不起作用。在

相关问题 更多 >