我如何将列表中的元素拆分为自己的元素?

时间:2019-01-14 21:58:09

标签: python

假设我有一个list,如下所示:

my_list = ["David Smith", "John Wilson", "Mike Davis", "Shawn Jones", 
            "Shawn Gilmour", "David Berman"]

如果我想获得一个listfirst名称分开的位置,以便我可以last count名称的所有实例,我该怎么办?

3 个答案:

答案 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),这将为您提供名字作为键,并为您提供姓氏列表作为其值,如果出现用例,将很有用。