[英]Quicker solution to the problem with loops and dictionaries
我最近解決了一個問題,我確信必須有更快的解決方案。 我只是在學習,我想編寫高效的代碼,所以如果你能向我提出任何建議會很有幫助。
我想要這個輸出(我得到了):
Jozefína likes to go to here: Amsterdam ,Liverpool ,London.
Marek likes to go to here: Košice.
Jozef likes to go to here: Lisabon ,Vancouver.
PS:人和城市的名字是完全隨機的,所以你可以改變它
我的這個問題的代碼是:
favourite_places = {
"Jozefína": ["Amsterdam", "Liverpool", "London"],
"Marek": ["Košice"],
"Jozef": ["Lisabon", "Vancouver"]
}
for name in favourite_places:
line = ""
for place in favourite_places[name]:
if len(favourite_places[name]) == 1:
line = place
else:
line += place + " ,"
if line[-1] == ",":
line = line[0:-2]
print(f"{name} likes to go to here: {line}.")
最后我想用一個人的名字和他或她喜歡去的地方(用逗號分隔)一句話。
我希望我正確地描述了問題。 我只想優化我的代碼。 我將不勝感激任何建議。
您缺少的是join
和items
功能。 join
用指定的分隔符連接所有可迭代項。 如果只有 1 項,則不會添加分隔符。 通常認為用+
或+=
連接字符串是一種不好的做法。 字符串是不可變的,因此每次連接都會產生一個新的字符串,必須為其分配內存。 為了避免這種情況,您可以首先將字符串的所有部分收集到列表中(您已經將其作為輸入),然后加入它們。
items()
返回字典的 (key, value) 元組。
favourite_places = {
"Jozefína": ["Amsterdam", "Liverpool", "London"],
"Marek": ["Košice"],
"Jozef": ["Lisabon", "Vancouver"]
}
for name, places in favourite_places.items():
print(f"{name} likes to go to here: {', '.join(places)}.")
我能想到的最簡單的方法是這樣的:
for name, places in favourite_places.items():
print(f'{name} likes to go here: {", ".join(places)}.')
.items()
從字典中返回一個 (key, value) 元組列表,這些元組被解構為 name 和 places,然后", ".join(places)
將返回一個字符串,該字符串將位置列表中的每個元素分開用逗號,如果只有一個元素,它會自動省略。
嘗試使用replace
for name, places in favourite_places.items():
print(name + " likes to go to here: " + str(places).replace('[', '').replace("'", "").replace(']', ''))
這里有一些改進:
favourite_places = {
"Jozefína": ["Amsterdam", "Liverpool", "London"],
"Marek": ["Košice"],
"Jozef": ["Lisabon", "Vancouver"]
}
for name, place in favourite_places.items():
line = ', '.join(place)
print(f'{name} likes to go to here: {line}')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.