我一直在玩 Python 中的字符串方法,我正在寻找一些帮助来理解以下行为:

I've been playing around with the strings method in Python and I was looking for some help in understanding the following behaviour:

如果我们在 Python 中考虑这个输入:

s="""David Smith 17,15,14,19
     Melina Jackson 15,16,17,19
     Charli Decker 14,15,18,15"""

如果我们将这个字符串分为 3 行,每行之间用“Enter”分隔,中间有一些 space,我们如何输出:

{
    "David_Smith": 16.25,
    "Melina_Jackson": 16.75,
    "Charli Decker": 15.50
}

我希望结果是输入数字的平均值。

您可以做的是:

  1. 每隔 space 拆分字符串。它将创建一个包含每个人 3 个元素的列表:名字、姓氏和标记(我猜)

  2. 遍历列表。首先,我们将名字和姓氏连接成 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}

这些是正确的值。

根据您更改的问题回答

代码:

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}