在給定的名為solve的方法中,它以一個名為items的字串串列作為引數。
您必須列印每個字母表的專案串列。按字母排序順序列印。
示例輸入:
面條, 米飯, 香蕉, 糖果, 拉面, 蛋奶酥, 杏, 蘋果, 面包
輸出:
a:蘋果杏
b:香蕉面包
n : 面條
r : 拉面
s : 蛋奶酥糖果
import collections
def solve(items):
result = {}
for word in items:
char = word[0]
if char in result:
result[char].append(word)
else:
result[char] = [word]
od = collections.OrderedDict(sorted(result.items()))
for key, value in od.items():
print ("%s : %s"%(key,value))
但是,我得到它的剎車......!不像想要的輸出......
uj5u.com熱心網友回復:
您沒有執行任何比較來查找 maxEnglish 或 maxTotalMarks。列印正確結果的原因print('Max Marks:',d['name'])是因為Dwight是 Ordered Dictionary 中的最后一個條目,而您正在列印最后一個專案的名稱。
您可以解決此問題的方法之一是保留跟蹤最大分數的變數,并且當您遍歷字典時,您可以與這些存盤的值進行比較以確定您正在迭代的當前值是大于還是小于到目前為止您看到的所有值。像這樣的東西:
def solve(stats):
maxEnglishMarks = -1
maxTotalMarks = -1
maxEnglishStudentName = maxTotalStudentName = None
for stat in stats:
totalMarks = sum([i for i in stat.values() if str(i).isnumeric() == True])
if totalMarks > maxTotalMarks:
maxTotalStudentName = stat['name']
maxTotalMarks = totalMarks
if stat['English'] > maxEnglishMarks:
maxEnglishStudentName = stat['name']
maxEnglishMarks = stat['English']
print('Max English:', maxEnglishStudentName)
print('Max Marks:', maxTotalStudentName)
stats = [
{'name': 'Jim', 'English': 92, 'Math': 80, 'Physics': 70},
{'name': 'Pam', 'French': 72, 'English': 80, 'Biology': 65},
{'name': 'Dwight', 'Farming': 95, 'English': 85, 'Chemistry': 97}
]
solve(stats)
uj5u.com熱心網友回復:
或者,您可以嘗試利用 Python collections.defaultdict,因為這將只是代碼邏輯:
您可以輕松地將其轉換為函式 - 也許作為練習?
from collections import defaultdict
inputs = "noodles, rice, banan, sweets, ramen, souffle, apricot, apple, bread"
groups = defaultdict(list)
lst = inputs.split(', ')
#print(lst)
for item in lst:
groups[item[0]].append(item)
for k, val in sorted(groups.items()):
print(k, ": ", *val) # *val to expand the list content
輸出:
a : apricot apple
b : banan bread
n : noodles
r : rice ramen
s : sweets souffle
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/420079.html
標籤:
上一篇:不明白為什么我的應用程式會這樣?
