Python 大文件中每个人的唯一值总数
我有一份独特的清单:Python 大文件中每个人的唯一值总数,python,python-3.x,python-3.7,Python,Python 3.x,Python 3.7,我有一份独特的清单: unique_list = {'apple', 'banana', 'coconut'} 我想知道有多少元素恰好出现在我的大文本文件中。我只需要号码,不需要姓名。例如,如果只为特定的人找到了“apple”和“banana”,那么它应该返回2 对于每个人的名字和姓氏,我需要知道这个人有多少种独特的水果。在大文件中,这可能很困难。我需要最快的方法 假设我从文本文件中获取名称: people = {'cody meltin', 'larisa harris', 'harry b
unique_list = {'apple', 'banana', 'coconut'}
我想知道有多少元素恰好出现在我的大文本文件中。我只需要号码,不需要姓名。例如,如果只为特定的人找到了“apple”和“banana”,那么它应该返回2
对于每个人的名字和姓氏,我需要知道这个人有多少种独特的水果。在大文件中,这可能很困难。我需要最快的方法
假设我从文本文件中获取名称:
people = {'cody meltin', 'larisa harris', 'harry barry'}
文本文件如下所示:
Name Fruit unit
cody melton apple 3
cody melton banana 5
cody melton banana 7
larisa harris apple 8
larisa harris apple 5
输出应如下所示:
{'cody meltin':2, 'larisa harris':1, 'harry barry':0}
我不想使用任何软件包,只想使用内置和基本库。只需使用:
xx = ['apple', 'apple', 'banana', 'coconut'];
d = dict()
for x in xx:
if x in d:
d[x] += 1
else:
d[x] = 1
print (d)
您可以利用python的基本库集合 输出
{'cody ': 2, 'melton': 2, 'cody': 1, 'harry': 1}
在上面的示例中,我传递了一个pd.Series作为它的参数,但是在您的例子中,您可以将df['name']传递给它,这是一个pd.Series对象。您没有指定源数据的格式,所以假设它是一个列表:
>>> data = [["cody melton", "apple", 3], ["cody melton", "banana", 5],
["cody melton", "banana", 7], ["larisa harris", "apple", 8],
["larisa harris", "apple", 5]]
当您在香草python中寻找性能时,请查看标准库——在本例中;我们将使用它来计算名称水果的所有独特组合:
>>> pairs = Counter(((x[0], x[1]) for x in data))
>>> pairs
Counter({('cody melton', 'banana'): 2, ('larisa harris', 'apple'): 2, ('cody melton', 'apple'): 1})
该参数是一个迭代器,它创建元组名称、源数据的结果,计数器对它们的出现进行计数
编辑:如果您只想计算水果位于特定集合中的水果:
fruits = set(['apple', 'banana', 'coconut'])
,然后将其作为条件添加到理解中:
>>> pairs = Counter(((x[0], x[1]) for x in data if x[1] in fruits))
我们就快到了-剩下的就是计算各个名字的出现次数:
>>> names = Counter((pair[0] for pair in pairs))
>>> names
Counter({'cody melton': 2, 'larisa harris': 1})
>>> dict(names) # this is how to cast it to a regular dict
{'larisa harris': 1, 'cody melton': 2}
我看到您的输出中有一个出现次数为0的harry barry-它们显然没有出现在源数据中,所以只需将它们添加到dict中,并使用值0
>>> names = Counter((pair[0] for pair in pairs))
>>> names
Counter({'cody melton': 2, 'larisa harris': 1})
>>> dict(names) # this is how to cast it to a regular dict
{'larisa harris': 1, 'cody melton': 2}