Reputation: 5
I am new to python and I am just trying to get a count of duplicate elements. My code looks something like this:
n=int(input("Enter the number of products to be stored in a list : "))
list1=[]
for i in range(n):
items=int(input("value for product " + str(i+1) + " : "))
list1.append(items)
dup=[]
for a in list1:
if list1.count(a)>1:
dup.append(a)
print("Count of duplicate elements in the list: ",dup)
Output:
Enter the number of products in a list : 5
value for product 1 : 4
value for product 2 : 4
value for product 3 : 4
value for product 4 : 1
value for product 5 : 5
Count of duplicate elements in the list: [4, 4, 4]
The answer should be 1 because it is just the number 4 that is a duplicate value but I get the above output. Can someone please advice?
Upvotes: 0
Views: 8621
Reputation: 61
`
input=list("AABBCCDDEE")
input1=set(input)
dict1=dict.fromkeys(input1,0)
print("Hello world")
for i in input:
dict1[i]=dict1[i]+1
print(dict1)`
Upvotes: 0
Reputation: 682
It is simple. You can use Counter from collections to count the occurrences of each element in the list. Then you can count the elements which are not unique as follows.
from collections import Counter
n=int(input("Enter the number of products to be stored in a list : "))
list1=[]
for i in range(n):
items=int(input("value for product " + str(i+1) + " : "))
list1.append(items)
dup_dict=Counter(list1)
count=0
for i in dup_dict.values():
if(i!=1):
count+=1
print("Count of duplicate elements in the list: ",count)
Upvotes: 0
Reputation: 32944
For what it's worth, here's a more advanced solution:
Generally for counting the occurrences of multiple elements, it's easiest to use a Counter
. Once you have that, you just need to get the number of items that occur more than once.
list1 = [4, 4, 4, 1, 5]
# ---
from collections import Counter
counts = Counter(list1) # > Counter({4: 3, 1: 1, 5: 1})
total = sum(count>1 for count in counts.values())
print(total) # -> 1
This sum()
works because count>1
returns False
or True
, and False == 0
and True == 1
.
Upvotes: 2
Reputation: 78
An option could be to use a dict, so you then not only have the count of duplicates, but also what was duplicated and with how many occurrences.
n = int(input("Enter the number of products to be stored in a list : ")) #
I have entered 5
list1 = []
for i in range(n):
items = int(input("value for product " + str(i + 1) + " : "))
list1.append(items)
dup = {}
for a in list1:
if list1.count(a) > 1:
dup[a] = dup.get(a, 0)+1
print("Count of duplicate elements in the list: ", len(dup))
print(dup)
Result is:
Enter the number of products to be stored in a list : 5
value for product 1 : 4
value for product 2 : 4
value for product 3 : 4
value for product 4 : 2
value for product 5 : 2
Count of duplicate elements in the list: 2
{4: 3, 2: 2}
Upvotes: 1
Reputation: 447
With the numpy
library, you could use numpy.unique
to count every occurrence in your numpy array:
import numpy
for a in list1:
if list1.count(a)>1:
dup.append(a)
dup_array = numpy.array(dup)
unique, counts = numpy.unique(dup, return_counts=True)
dict(zip(unique, counts))
Upvotes: 0
Reputation: 401
If the Count is greater than one, check if a
is not in the dup
list, then add a
to it.
Finally, print the length of the dup
list
n=int(input("Enter the number of products to be stored in a list : "))
list1=[]
for i in range(n):
item = int(input("value for product " + str(i+1) + " : "))
list1.append(item)
dup = []
for a in list1:
if (list1.count(a) > 1) and (a not in dup):
dup.append(a)
print("Count of duplicate elements in the list: ", len(dup))
Upvotes: 2
Reputation: 780798
You're adding the duplicate to dup
even if it's already in the list. You should check for that before adding it.
for a in list1:
if list1.count(a)>1 and a not in dup:
dup.append(a)
then if you want the count of duplicates, you should print the length of dup
, not its contents.
print("Count of duplicate elements in the list: ",len(dup))
You could also make dup
a set instead of a list. Then duplicates are ignored. Do this with the initialization:
dup = set()
and use .add()
instead of .append()
.
Upvotes: 1