假设我有一个list
,如下所示:
my_list = ["David Smith", "John Wilson", "Mike Davis", "Shawn Jones",
"Shawn Gilmour", "David Berman"]
如果我想获得一个list
和first
名称分开的位置,以便我可以last
count
名称的所有实例,我该怎么办?
答案 0 :(得分:0)
my_list = ["David Smith", "John Wilson", "Mike Davis", "Shawn Jones", "Shawn Gilmour", "David Berman"]
new_list = []
for ele in my_list:
for name in ele.split():
new_list.append(name)
输出:
print (new_list)
['David', 'Smith', 'John', 'Wilson', 'Mike', 'Davis', 'Shawn', 'Jones', 'Shawn', 'Gilmour', 'David', 'Berman']
答案 1 :(得分:0)
您可以将collections.Counter
与生成器表达式一起使用,该表达式使用str.split
提取名字:
from collections import Counter
Counter(name.split()[0] for name in my_list)
这将返回:
Counter({'David': 2, 'Shawn': 2, 'John': 1, 'Mike': 1})
答案 2 :(得分:0)
使用defaultdict
的解决方案。将名字存储为字典的键,并为每个名字添加1。
from collections import defaultdict
result = defaultdict(int)
my_list = ["David Smith", "John Wilson", "Mike Davis", "Shawn Jones",
"Shawn Gilmour", "David Berman"]
for first, last in map(lambda x: x.split(), my_list):
result[first] += 1
David: 2
John: 1
Mike: 1
Shawn: 2
如果需要,可以使用defaultdict(list)
并附加问题result[first].append(last)
,这将为您提供名字作为键,并为您提供姓氏列表作为其值,如果出现用例,将很有用。