Set .discard(), .remove() & .pop() HackerRank Solution in Python

Problem

.remove(x)

This operation removes element x from the set.

If element x does not exist, it raises a KeyError.

The .remove(x) operation returns None.

Example

>>> s = set([1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> s.remove(5)

>>> print s

set([1, 2, 3, 4, 6, 7, 8, 9])

>>> print s.remove(4)

None

>>> print s

set([1, 2, 3, 6, 7, 8, 9])

>>> s.remove(0)

KeyError: 0

.discard(x)

This operation also removes element x from the set.

If element x does not exist, it does not raise a KeyError.

The .discard(x) operation returns None.

Example

>>> s = set([1, 2, 3, 4, 5, 6, 7, 8, 9])

>>> s.discard(5)

>>> print s

set([1, 2, 3, 4, 6, 7, 8, 9])

>>> print s.discard(4)

None

>>> print s

set([1, 2, 3, 6, 7, 8, 9])

>>> s.discard(0)

>>> print s

set([1, 2, 3, 6, 7, 8, 9])

.pop()

This operation removes and returns an arbitrary element from the set.

If there are no elements to remove, it raises a KeyError.

Example

>>> s = set([1])

>>> print s.pop()

1

>>> print s

set([])

>>> print s.pop()

KeyError: pop from an empty set

Task

You have a non-empty set of s, and you have to execute N commands given in N lines.

The commands will be pop, remove and discard.

Input Format

The first line contains integer n, the number of elements in the set s.

The second line contains n space-separated elements of set s. All of the elements are non-negative integers, less than or equal to 9.

The third line contains integer N, the number of commands.

The next N lines contain either pop, remove and/or discard commands followed by their associated value.

Output Format

Print the sum of the elements of set s on a single line.

Sample Input

9

1 2 3 4 5 6 7 8 9

10

pop

remove 9

discard 9

discard 8

remove 7

pop 

discard 6

remove 5

pop 

discard 5

Sample Output

4

Explanation

After completing these 10 operations on the set, we get set. Hence, the sum is 4.

Note: Convert the elements of set s to integers while you are assigning them. To ensure the proper input of the set, we have added the first two lines of code to the editor.

Solution in Python

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
num = int(input())
data = set(map(int, input().split()))
operations = int(input())

for x in range(operations):
  oper = input().split()
  if oper[0] == "remove":
    data.remove(int(oper[1]))
  elif oper[0] == "discard":
    data.discard(int(oper[1]))
  else:
    data.pop()
    
print(sum(data))

Next Post Previous Post
No Comment
Add Comment
comment url