我需要创建一个字典来计算名称在列表中出现的次数

时间:2018-04-18 01:06:21

标签: python python-3.x list function

到目前为止我有这个代码:

def name_counts(name_list):
    name_dict = {}
    for word in name_list:
        if word in name_dict:
            name_dict[word] += 1
        else:
            name_dict[word] = 1


print(name_counts(name_list))

导致:

但我需要它只打印名字,而不是持续。我该怎么办?我知道我应该使用split函数,但只要我name_list.split()它返回一个属性错误。

4 个答案:

答案 0 :(得分:1)

收集模块中的Counter就是这么做的!您可以使用:

from collections import Counter
# get firstname from name
print(Counter(firstname))

编辑:我将让你弄清楚如何解析名字:)

答案 1 :(得分:1)

你非常接近!你现在在你的功能中所做的只是查看全名,而方向说你应该只看一下名字并看看它出现了多少。你应该拥有的是这样的东西。在查看循环中的每个单词时,创建一个数组,然后说name并将其设置为word.split()。然后,就像在下面的代码中一样,检查列表中是否存在name[0](名字),如果存在则增加name_dict[name[0]]。如果没有,请使用name[0]创建一个新密钥并将其设置为1。

答案 2 :(得分:0)

我会在for循环的开头创建一个临时变量,它包含拆分名称,如下所示:

for word in name_list:
  name = word.split()[0]
  if name in name_dict:
    name_dict[name] += 1
  else:
    name_dict[name] = 0

请注意,.split()函数返回list,因此要获取名字,您必须获取索引为0的项目。

希望有所帮助!

答案 3 :(得分:0)

这可以使用http://127.0.0.1:3128在一行中实现。

<div *ngFor="let items of itemList;let i=index">
  <div class="xxx"><input type="checkbox" id="chk" name="checker{{i}}" (click)="AddToTextArea(items.Name)" />
   {{items.Name}}
  </div>
</div>


<textarea class="ttt" id="itemList" name="itemName" rows="5">
{{showselected()}}</textarea> // you can also iterate a list here with ngFor