我對這個電話簿任務有疑問。首先,我必須對數字進行降序排序,然后對所有數字求和。我認為排序是正確的,但如果不是,請告訴我。我最大的問題是總結所有的數字。第二個代碼塊來自我的教授作為幫助,但它并沒有真正幫助我。我嘗試了幾種方法(使用 if 函式、使用 count 等)。也許我只是錯過了一些東西,所以請幫助我。
這是字典
phoneBook = [{'fname': 'Sophia', 'lname': 'Thorarensen', 'number': '06508641036'},
{'fname': 'Emma', 'lname': 'Bl?ndal', 'number': '06504228512'},
{'fname': 'Olivia', 'lname': 'Thorarensen', 'number': '06501126965'},
{'fname': 'Ava', 'lname': 'Hansen', 'number': '06762858077'},
{'fname': 'Isabella', 'lname': 'Olsen', 'number': '06801324090'},
{'fname': 'Evelyn', 'lname': 'Bergmann', 'number': '06805592151'},
{'fname': 'Charlotte', 'lname': 'Andersen', 'number': '06762229010'},
{'fname': 'Liam', 'lname': 'Briem', 'number': '06767141082'},
{'fname': 'Oliver', 'lname': 'Briem', 'number': '06802647719'},
{'fname': 'Noah', 'lname': 'Thorlacius', 'number': '06805539375'},
{'fname': 'William', 'lname': 'Jensen', 'number': '06765392663'},
{'fname': 'James', 'lname': 'Hjaltalín', 'number': '06508393585'},
{'fname': 'Oliver', 'lname': 'Scheving', 'number': '06769395459'},
{'fname': 'Benjamin', 'lname': 'Petersen', 'number': '06505619735'},
{'fname': 'Sophia', 'lname': 'Andersen', 'number': '06763080277'},
{'fname': 'Charlotte', 'lname': 'Petersen', 'number': '06766619175'},
{'fname': 'Mia', 'lname': 'M?ller', 'number': '06802090547'},
{'fname': 'Amelia', 'lname': 'Nielsen', 'number': '06765209564'},
{'fname': 'Mia', 'lname': 'Waage', 'number': '06802348806'},
{'fname': 'Elijah', 'lname': 'Kvaran', 'number': '06507279982'},
{'fname': 'Logan', 'lname': 'Jensen', 'number': '06508886974'},
{'fname': 'Logan', 'lname': 'Fjeldsted', 'number': '06763174139'},
{'fname': 'Lucas', 'lname': 'Norddahl', 'number': '06768229218'},
{'fname': 'Mason', 'lname': 'Berndsen', 'number': '06807930516'}]
這是我的降序排序代碼:
def sortAlg(listIn):
total = 0
for i in range(1, len(listIn)):
person = listIn[i]
j = i - 1
while j >= 0 and (person['number'] > listIn[j]['number']):
listIn[j 1] = listIn[j]
j -= 1
listIn[j 1] = person
return total # return the sum of all numbers here
這是我教授的幫助
# run the algorithm on the phoneBook defined above
# the sorting algorithm is **in place**, which means the phoneBook changed after the call
t_num = sortAlg(phoneBook)
print('Sum of all numbers:', t_num)
print()
for i in phoneBook:
print(i)
Thanks you in advance.
uj5u.com熱心網友回復:
您可以像這樣以pythonic方式對其進行排序:
phoneBook_sorted = sorted(phoneBook, reverse=True, key= lambda x: int(x['number']))
然后sum:
sum = 0
for x in phoneBook_sorted:
sum = int(x['number'])
uj5u.com熱心網友回復:
鑒于要求是就地排序,您可以這樣做:
phoneBook.sort(key=lambda e: int(e['number']))
值得注意的是,問題中顯示的示例資料將電話號碼作為長度相同的字串。鑒于這種情況,實際上不需要在 lambda中轉換為int 。
總結電話號碼的總數(為什么?):
total = sum(int(e['number']) for e in phoneBook)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/471993.html
