簡體   English   中英

根據第三個列表中的一個隨機項,從兩個列表之一中選擇一個隨機項

[英]Choosing a random item from one of two lists, based on a random item from a third

我正在嘗試使用以下代碼選擇隨機國家/地區的隨機城市:

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的工作方式。

更好的設置是將數據存儲在字典中,如下所示。 然后,您可以選擇一個隨機國家(通過在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)

應該管用。 僅從兩個附加列表中進行選擇就更清楚了,但可能不適用於您的特定情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM