我有兩個串列,一個包含作業日,另一個包含與作業日對應的費用:
wd = [1, 4, 5, 6]
fees = [1.44, 1.17, 1.21, 1.26]
我需要第三張包含所有作業日的清單,在沒有費用的作業日填寫前一天的費用:
result = [1.44, 1.44, 1.44, 1.17, 1.21, 1.26]
correspDay = [1, 2, 3, 4, 5, 6]
我該如何編碼?
uj5u.com熱心網友回復:
我會先建立一個字典,以便能夠按天查找費用:
>>> wd = [1,4,5,6]
>>> fees = [1.44, 1.17, 1.21, 1.26]
>>> fee_dict = dict(zip(wd, fees))
correspDay然后用一個簡單的構建range:
>>> correspDay = list(range(1, 7))
并result通過迭代構建correspDay,fee_dict用于查找費用并在fee_dict出現空時使用最后一個條目:
>>> result = []
>>> for i in correspDay:
... result.append(fee_dict.get(i) or result[-1])
...
>>> result
[1.44, 1.44, 1.44, 1.17, 1.21, 1.26]
uj5u.com熱心網友回復:
我會將這些值放入字典中,然后回圈遍歷一周中的幾天(1-7),檢查我們是否已經有了那一天的值。如果您確實有當天的價值,請存盤它以防第二天沒有價值。如果沒有值,則在字典中創建一個專案,其中包含當天的鍵和最后一次費用的值。
最后,我對串列進行了排序,但除了使輸出更易于閱讀之外,沒有真正的理由這樣做
fees_dict = {1: 1.44, 4: 1.17, 5: 1.21, 6: 1.26}
last_fee = 0
for i in range(1, 8):
if i in fees_dict:
last_fee = fees_dict[i]
else:
fees_dict[i] = last_fee
sorted_fees_dict = dict(sorted(fees_dict.items()))
print(sorted_fees_dict)
uj5u.com熱心網友回復:
feeMap必須支付的映射days用于存盤先前的值(費用)。feeprev
#!/usr/bin/env python3.10
wd = [1,4,5,6]
fees = [1.44, 1.17, 1.21, 1.26]
corresDay = list(range(1, 6))
feeMap = dict()
index = 0
for index, day in enumerate(wd):
feeMap[day] = fees[index]
prev = None
for day in range(1, 6):
if day not in feeMap.keys():
feeMap[day] = prev
else:
prev = feeMap[day]
feeMap = sorted(feeMap.items())
print(feeMap)
輸出:
$ ./working_days.py
[(1, 1.44), (2, 1.44), (3, 1.44), (4, 1.17), (5, 1.21), (6, 1.26)]
uj5u.com熱心網友回復:
我沒有做任何我看到上面的好人的事情,我試圖讓你更清楚。
wd = [1,4,5,6]
fees = [1.44, 1.17, 1.21, 1.26]
fee_dict = dict(zip(wd, fees))
correspDay = list(range(1,8))
result = []
for i in correspDay:
result.append(fee_dict.get(i) or result[-1])
我只是添加這一行以在字典中輸出
result = dict(zip(correspDay, result))
輸出:
{1: 1.44, 2: 1.44, 3: 1.44, 4: 1.17, 5: 1.21, 6: 1.26, 7: 1.26}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/463637.html
