类似张贴在此网址查询:
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’],
]
我曾尝试不同的东西,但似乎无法使它发挥作用。
试图将其转换为字符串和字符串申请分割功能,但无济于事。
你可以做这样的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', '木', '我的']
您可以创建一个键为列表值和值作为其计数词典
你的代码可能是这样的。
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唯一获得此[“广告”]
您可以使用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
您可以通过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}")
尝试下面:
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