我讓用戶選擇一串作業日,然后將其存盤在串列中。我的目標是用它對應的weekday number替換任何用戶選擇的字串。我的代碼有效,但似乎不必要地笨重。有沒有更優雅的方式?
selected_weekdays = ["MON", "WED", "THU", "SAT"]
for i in range(len (selected_weekdays)):
if selected_weekdays[i] == "MON":
selected_weekdays[i] = 0
elif selected_weekdays[i] == "TUE":
selected_weekdays[i] = 1
elif selected_weekdays[i] == "WED":
selected_weekdays[i] = 2
elif selected_weekdays[i] == "THU":
selected_weekdays[i] = 3
elif selected_weekdays[i] == "FRI":
selected_weekdays[i] = 4
elif selected_weekdays[i] == "SAT":
selected_weekdays[i] = 5
elif selected_weekdays[i] == "SUN":
selected_weekdays[i] = 6
else:
pass
print(selected_weekdays)
正確的輸出:
[0, 2, 3, 5]
uj5u.com熱心網友回復:
您可以通過生成字典映射來避免一些額外的作業
最好避免修改由于各種原因也在迭代的結構,
請參閱迭代時修改串列
字典.get()方法將選擇一個默認選項(在您的原始情況下是作業日,盡管您可能想要更改它,使其成為以下選項之一)
- 未列出的作業日(這是您的代碼當前所做的,所以我保持結果相同)
- 例外(
KeyError來自直接索引[]……您可能希望它突出顯示錯誤) None(本質上會拋出錯誤的值,并且filter在下一步中很容易)
# dictionary expression
weekday_mapping = {day: index for index, day in enumerate((
"MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"))}
selected_weekdays = ["MON", "WED", "THU", "SAT"]
results = []
for weekday in selected_weekdays:
results.append(weekday_mapping.get(weekday, weekday))
>>> results
[0, 2, 3, 5]
>>> selected_weekdays = ["MON", "WED", "THU", "FakeDay", "SAT"]
...
>>> results
[0, 2, 3, 'FakeDay', 5]
uj5u.com熱心網友回復:
使用帶有串列理解的字典:
days = {'MON': 0, 'TUE': 1, 'WED': 2, 'THU': 3, 'FRI': 4, 'SAT': 5, 'SUN': 6}
selected_weekdays = ["MON", "WED", "THU", "SAT"]
output = [days[x] for x in selected_weekdays]
print(output) # [0, 2, 3, 5]
uj5u.com熱心網友回復:
一種方法是使用串列,并將值作為串列的索引:
weekdays_list = ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"]
selected_weekdays = ["MON", "WED", "THU", "SAT"]
selected_weekdays_numbered = [weekdays_list.index(i) for i in selected_weekdays]
print(selected_weekdays_numbered)
輸出:
[0, 2, 3, 5]
uj5u.com熱心網友回復:
你可以使用字典:
day_number = {"MON": 0, "TUE": 1, "WED": 2, "THU": 3, "FRI": 4, "SAT": 5, "SUN": 6}
selected_weekdays = ["MON", "WED", "THU", "SAT"]
for i in range(len(selected_weekdays)):
selected_weekdays[i] = day_number[selected_weekdays[i]]
print(selected_weekdays)
您可以使用代替 for 回圈
selected_weekdays = [day_number[d] for d in selected_weekdays]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/372444.html
