如果我們在 Python 中考慮這個輸入:
s="""David Smith 17,15,14,19
Melina Jackson 15,16,17,19
Charli Decker 14,15,18,15"""
如果我們將這個字串分為 3 行,并且每行用“Enter”隔開,并且它們之間有一些空格,我們怎么能這樣輸出:
{
"David_Smith": 16.25,
"Melina_Jackson": 16.75,
"Charli Decker": 15.50
}
我希望結果是輸入數字的平均值。
uj5u.com熱心網友回復:
你可以做的是:
將字串拆分為每個空格。它將創建一個包含每人 3 個元素的串列:名字、姓氏和標記(我猜)
遍歷串列。首先,我們將名字和姓氏連接到
Mark_Twain. 然后我們計算平均值。然后我們將這對添加到字典中
def calc_mean(numbers: list[int]) -> float:
"""calculate a mean"""
return sum(numbers) / len(numbers)
def extract_mean_from_string(s: str) -> dict:
arr = s.strip().split(" ")
means = {}
i = 0
while i < len(arr):
name = arr[i] "_" arr[i 1]
string_numbers = arr[i 2]
numbers = list(map(int, string_numbers.strip().split(",")))
means[name] = calc_mean(numbers)
i = 3
return means
# If we considered this input in Python:
s = """David Smith 17,15,14,19 Melina Jackson 15,16,17,19,20 Charli Decker 14,15,18 """
# I want to have this output:
expected = {"David_Smith": 16.25, " Melina_Jackson": 21.75, "Charli Decker": 15.75}
print(expected)
print(extract_mean_from_string(s))
{'David_Smith': 16.25, ' Melina_Jackson': 21.75, 'Charli Decker': 15.75}
{'David_Smith': 16.25, 'Melina_Jackson': 17.4, 'Charli_Decker': 15.666666666666666}
這些是正確的值。
uj5u.com熱心網友回復:
在您更改問題時回答
代碼 :
s = """David Smith 17,15,14,19
Melina Jackson 15,16,17,19
Charli Decker 14,15,18,15"""
lines = s.split('\n')
mydict = {}
for detail in lines :
newno = []
items = detail.split(' ')
nos = items[2].split(',')
for s in nos :
newno.append(int(s))
avg = float(sum(newno)/len(newno))
name = str(items[0]) ' ' str(items[1])
mydict[name] = avg
print(mydict)
輸出 :
{'David Smith': 16.25, 'Melina Jackson': 16.75, 'Charli Decker': 15.5}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/407633.html
標籤:
