查找字符串中的嵌套列表的独特元素

问题描述 投票:0回答:5

类似张贴在此网址查询:

https://stackoverflow.com/questions/54477996/finding-unique-elements-in-nested-list/, 

我有另一个查询。

如果我有我从大熊猫进口的清单,我需要得到一个列表与所有的独特元素作为输出

[Ac, Ad, An, Bi, Co, Cr, Dr, Fa, Mu, My, Sc]

一旦我有足够的独特元素,我要检查每个整个名单中的这些元素的计数。可有人建议,我怎么能做到呢?

mylist = df.Abv.str.split().tolist()
mylist
[[‘Ac,Cr,Dr’],
 [‘Ac,Ad,Sc'],
 [‘Ac,Bi,Dr’],
 [‘Ad,Dr,Sc'],
 [‘An,Dr,Fa’],
 [‘Bi,Co,Dr’],
 [‘Dr,Mu’],
 [‘Ac,Co,My’],
 [‘Co,Dr’],
 [‘Ac,Ad,Sc'],
 [‘An,Ac,Ad’],
]

我曾尝试不同的东西,但似乎无法使它发挥作用。

试图将其转换为字符串和字符串申请分割功能,但无济于事。

python python-3.x
5个回答
0
投票

你可以做这样的Python3

    mylist = [['Ac,Cr,Dr'],
    ['Ac,Ad,Sc'],
    ['Ac,Bi,Dr'],
    ['Ad,Dr,Sc'],
    ['An,Dr,Fa'],
    ['Bi,Co,Dr'],
    ['Dr,Mu'],
    ['Ac,Co,My'],
    ['Co,Dr'],
    ['Ac,Ad,Sc'],
    ['An,Ac,Ad'],
    ]

    uniquedict = {}

    for sublist in mylist:
        for item in sublist[0].split(','):
            if item in uniquedict.keys():
                uniquedict[item] += 1
            else:
                uniquedict[item] = 1

    print(uniquedict)
    print(list(uniquedict.keys()))

{ 'AC':6 'CR':1“,博士:7, '广告':4, '钪':3 '球':2, '一个':2, '法':1”合作 ':3,' 穆 ':1,' 我 ':1}' 交流 '' CR '' 博士 '' 广告 '' 钪 '' 碧 '' 安全 '' 发”, 'CO', '木', '我的']


0
投票

您可以创建一个键为列表值和值作为其计数词典

你的代码可能是这样的。

mylists = [[‘Ac,Cr,Dr’],
 [‘Ac,Ad,Sc'],
 [‘Ac,Bi,Dr’],
 [‘Ad,Dr,Sc'],
 [‘An,Dr,Fa’],
 [‘Bi,Co,Dr’],
 [‘Dr,Mu’],
 [‘Ac,Co,My’],
 [‘Co,Dr’],
 [‘Ac,Ad,Sc'],
 [‘An,Ac,Ad’],
]
unique = {}

for mylist in mylists:
    for elem in mylist:
        unique[elem] = unique[elem]+1 if elem in unique else 1

unique.keys()将给独特元素的数组,如果你想要的任何值的数,您可以从字典e.g唯一获得此[“广告”]


0
投票

您可以使用collections.Counter使元素的计数的字典。这也将让您轻松访问所有独特元素的列表。它看起来像你有一个列表的列表,其中每个子列表包含英格尔字符串。您将需要split这些你将它们添加到柜台前。

from collections import Counter
count = Counter()
mylist = [['Ac,Cr,Dr'],
 ['Ac,Ad,Sc'],
 ['Ac,Bi,Dr'],
 ['Ad,Dr,Sc'],
 ['An,Dr,Fa'],
 ['Bi,Co,Dr'],
 ['Dr,Mu'],
 ['Ac,Co,My'],
 ['Co,Dr'],
 ['Ac,Ad,Sc'],
 ['An,Ac,Ad'],
]

for arr in mylist:
    count.update(arr[0].split(','))

print(count) # dictionary of symbols: counts
print(list(count.keys())) # list of all unique elements

0
投票

您可以通过qazxsw POI,qazxsw POI和POI qazxsw提供了非常强大的工具优势,得到一个在线解决方案。

如果你的列表只包含一个元素:

collections

这是你会得到什么:

itertools

否则,如果您的列表有多个元素:

functools

这是你在这种情况下获得:

from collections import Counter
from itertools import chain
from functools import partial

if __name__ == '__main__':

    mylist = [
        ['Ac,Cr,Dr'],
        ['Ac,Ad,Sc'],
        ['Ac,Bi,Dr'],
        ['Ad,Dr,Sc'],
        ['An,Dr,Fa'],
        ['Bi,Co,Dr'],
        ['Dr,Mu'],
        ['Ac,Co,My'],
        ['Co,Dr'],
        ['Ac,Ad,Sc'],
        ['An,Ac,Ad'],
     ]

    # if lists contain only one element
    occurrence_count = Counter(chain(*map(lambda x: x[0].split(','), mylist)))

    items = list(occurrence_count.keys())  # items, with no repetitions
    all_items = list(occurrence_count.elements())  # all items
    ac_occurrences = occurrence_count['Ac']  # occurrences of 'Ac'

    print(f"Unique items: {items}")
    print(f"All list elements: {all_items}")
    print(f"Occurrences of 'Ac': {ac_occurrences}")

0
投票

尝试下面:

Unique items: ['Ac', 'Cr', 'Dr', 'Ad', 'Sc', 'Bi', 'An', 'Fa', 'Co', 'Mu', 'My']
All list elements: ['Ac', 'Ac', 'Ac', 'Ac', 'Ac', 'Ac', 'Cr', 'Dr', 'Dr', 'Dr', 'Dr', 'Dr', 'Dr', 'Dr', 'Ad', 'Ad', 'Ad', 'Ad', 'Sc', 'Sc', 'Sc', 'Bi', 'Bi', 'An', 'An', 'Fa', 'Co', 'Co', 'Co', 'Mu', 'My']
Occurrences of 'Ac': 6
© www.soinside.com 2019 - 2024. All rights reserved.