返回名称,但无法计数第一个示例

2024-09-27 21:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

这段代码应该从数据中返回名字,然后返回名字以及某个名字存在的次数

它工作得很好,但是大卫,第一个名字,出现了大卫1大卫1,当它显然应该是##大卫2

def name_counts(name):

    name = str(name)

    name = name.split()

    wordDictionary = {}

    for word in name[::2]:

       if word in wordDictionary:

            wordDictionary[word] += 1

       else:
            wordDictionary[word] = 1

    return wordDictionary

name_list = ["David Joyner", "David Zuber", "Brenton Joyner",
             "Brenton Zuber", "Nicol Barthel", "Shelba Barthel",
             "Shelba Crowley", "Shelba Fernald", "Shelba Odle",
             "Shelba Fry", "Maren Fry"]
print(name_counts(name_list))

Tags: namein名字大卫listworddavidcounts
3条回答

分别拆分输入列表的每个元素。另外,使用collections.Counter来计算名称

import collections


def name_counts(names):
    d = collections.Counter()
    for name in names:
        first, last = name.split()
        d[first] += 1
    return d

这可以缩短为

def name_counts(names):
    return Counter(name.split()[0] for name in names)

改变

name = str(name)

致:

name = ' '.join(name)

当列表转换为字符串时,它包括逗号和方括号

您只需要在函数中添加一行,就可以理解为什么会发生这种情况

print(name[0], name[2]) 

一行接一行地添加上面的内容

name = str(name) 

然后再次运行代码

相关问题 更多 >

    热门问题