Use Counter
and defaultdict
from collections
:
from collections import defaultdict
from collections import Counter
A = [1 ,2 ,3 ,2 ,5, 1]
# create a mapping from each item to it's count
counter = Counter[A]
# now reverse the mapping by using a defaultdict for convenience
countmap = defaultdict[list]
for k, v in counter.iteritems[]:
countmap[v].append[k]
# take all values that occurred once
print countmap[1] # [3, 5]
If you're interested in what the mappings are you can print them:
The counter
:
Counter[{1: 2, 2: 2, 3: 1, 5: 1}]
The countmap
:
defaultdict[, {1: [3, 5], 2: [1, 2]}]
To manually create the counter you can use this function:
def make_counter[lst]:
counter = dict[]
for item in lst:
if item in counter:
counter[item] += 1
else:
counter[item] = 1
return counter
make_counter[A]
Output:
{1: 2, 2: 2, 3: 1, 5: 1}
Non-repeating elements in an array in python
Here, in this page we will discuss the program to print the non-repeating elements in python programming language. We are given with an integer array and need to print those elements which occurs only one time.
Example
Input : arr[8] = [10, 20, 70, 90, 80, 20, 10, 20]Output : 70 90 80
Explanation : 70, 90 and 80 are occur 1 time in the given array, 10 occurs 2 times and 20 occurs 3 times.
Methods Discussed :
- Method 1 : Using Two for loops
- Method 2 : Using dictionary
Method 1 :
In this method we will count the frequency of each elements using two for loops and print those elements which have frequency equals to one.
- To check the status of visited elements create a array of size n.
- Run a loop from index 0 to n and check if [visited[i]==1] then skip that element.
- Otherwise create a variable count = 1 to keep the count of frequency.
- Run a loop from index i+1 to n
- Check if[arr[i]==arr[j]], then increment the count by 1 and set visited[j]=1.
- After complete iteration of inner for loop and check if count == 1 then print those element.
Time and Space Complexity :
- Time Complexity : O[n2]
- Space Complexity : O[n]
Method 1 : Code in Python
Run
# Python 3 program to count unique elements def count[arr, n]: # Mark all array elements as not visited visited = [False for i in range[n]] # Traverse through array elements # and count frequencies for i in range[n]: # Skip this element if already # processed if [visited[i] == True]: continue # Count frequency count = 1 for j in range[i + 1, n, 1]: if [arr[i] == arr[j]]: visited[j] = True count += 1 if count == 1 : print[arr[i]]; # Driver Code arr = [10, 30, 40, 20, 10, 20, 50, 10] n = len[arr] count[arr, n]
Method 2 :
In this method we will count use dictionary to count the frequency of each elements and then check if that frequency is equal to 1 or not.
- Declare a dictionary dict[] say, mp = dict[].
- Start iterating over the entire array
- If element is present in map, then increase the value of frequency by 1.
- Otherwise, insert that element in map.
- After complete iteration over array, start traversing map and check if value is equal to 1,then print the key value.
Time
and Space Complexity:
- Time Complexity : O[n]
- Space Complexity : O[n]
Method 2 : Code in Python
Run
def count[arr, n]: mp = dict[] # Traverse through array elements # and count frequencies for i in range[n]: if arr[i] in mp.keys[]: mp[arr[i]] += 1 else: mp[arr[i]] = 1 # Traverse through map and print # frequencies for x in mp: if mp[x]==1 : print[x]; # Driver Code arr = [10, 30, 40, 20, 10, 20, 50, 10] n = len[arr] count[arr, n]
How do I get a non repeated value in a list Python?
Ways to Get Unique Values from a List in Python.
Python set[] method..
Using Python list. append[] method along with a for loop..
Using Python numpy. unique[] method..
How do you find non repeated characters in a string in python?
"": slen0 = len[myStr] ch = myStr[0] myStr = myStr. replace[ch, ""] slen1 = len[myStr] if slen1 == slen0-1: print ["First non-repeating character = ",ch] break; else: print ["No Unique Character Found! "]
How do you find a non repeated number in an array?
Finding the non repeating element in an array can be done in 2 different ways. Method 1: Use two loops, one for the current element and the other to check if the element is already present in the array or not. Method 2: Traverse the array and insert the array elements and their number of occurences in the hash table.
How do you check if there are duplicates in a list Python?
Multiple Ways To Check if duplicates exist in a Python list.
Length of List & length of Set are different..
Check each element in set. if yes, dup, if not, append..
Check for list.count[] for each element..