DEV Community

Omkar Bhagat
Omkar Bhagat

Posted on

9 2

Python: last minute notes for your coding interviews

If you are someone who opts for the Python language for your coding (data structures and algorithms) interviews, then you may want to bookmark this post for your last minute revision.

1. Convert dictionary key-values to a list of tuples

seen = {'i': 2, 'love': 2, 'leetcode': 1, 'coding': 1}

seen.items()
# [('i', 2), ('love', 2), ('coding', 1), ('leetcode', 1)]
Enter fullscreen mode Exit fullscreen mode

2. Populating a dictioonary with +1/-1

Quickly increment or decrement a value of a key in a dictionary:

seen[c] = 1 + seen.get(c,0)
seen[c] = seen.get(c,0) - 1
Enter fullscreen mode Exit fullscreen mode

3. Sort based on key and reverse

# sorting interval at index i 
# by 1st value as key in that interval
# [ [1,2], [3,4] ]
# and then reversing the result
# [ [3,4], [1,2] ]

items.sort(key=lambda x: x[1], reverse=True)
Enter fullscreen mode Exit fullscreen mode

4. Check if list type

if isinstance(x, list)

# OR

if type(x) is list
Enter fullscreen mode Exit fullscreen mode

5. ASCII values

ord('A') = 65

ord('Z') = 90

ord('a') = 97

ord('z') = 122

chr(65) = 'A'
Enter fullscreen mode Exit fullscreen mode

6. Limit float to 2 decimal places

round(x, 2)
Enter fullscreen mode Exit fullscreen mode

7. Using a double ended queue

from collections import deque

>>> word = 'hit'

>>> q = deque([word])
>>> q
deque(['hit'])

>>> q = deque(word)
>>> q
deque(['h', 'i', 't'])

# functions like these exist:
# q.appendleft
# q.popleft
# q.append
# q.pop
Enter fullscreen mode Exit fullscreen mode

8. Creating adjacency list with defaultdict

from collections import defaultdict

neighbours = defaultdict(list)

# creates a structure like this:
# neighbours = {
#     key1: [item1, item2],
#     key2: [item1, item2, item3],
# }

# can be populated as follows:
for key, val in somelist:
    neighbours[key].append(val)

Enter fullscreen mode Exit fullscreen mode

9. Intersection of two sets

>>> a = { 1, 2, 3 }
>>> b = { 3, 4, 5 }
>>> a.intersection(b)
{3}
>>> list(a.intersection(b))
[3]
Enter fullscreen mode Exit fullscreen mode

10. Combinations vs Permutations

a = "ABC"

>>> list(itertools.permutations(a))
[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')]

>>> list(itertools.combinations(a, 3))
[('A', 'B', 'C')]

>>> list(itertools.combinations(a, 2))
[('A', 'B'), ('A', 'C'), ('B', 'C')]

>>> list(itertools.permutations(a, 2))
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
Enter fullscreen mode Exit fullscreen mode

11. Reading input line by line

if __name__ == '__main__':
    n = int(input().strip())

    words = []

    for _ in range(n):
        words_item = input()
        words.append(words_item)

    # call some function after reading..
    noPrefix(words)
Enter fullscreen mode Exit fullscreen mode

12. Writing test cases

class Solution:

    def twoSum(self, nums, target):

        seen = {}

        for i, num in enumerate(nums):
            num2 = target-num

            if num2 in seen:
                return [seen[num2], i]
            else:
                seen[num] = i

import unittest
class BasicTests(unittest.TestCase):

    testcases = [
        ([2,7,11,15], 9, [0,1]),
        ([3,2,4], 6, [1,2]),
        ([3,3], 6, [0,1])
    ]

    def test1(self):
        s = Solution()
        for nums, target, expected in self.testcases:
            actual = s.twoSum(nums, target)
            # print(actual, expected)
            assert actual == expected or list(reversed(actual)) == expected

if __name__ == "__main__":
    unittest.main()
Enter fullscreen mode Exit fullscreen mode

I have personally found this quite helpful and I hope you too will get some value from it. Good luck!

Heroku

Deliver your unique apps, your own way.

Heroku tackles the toil — patching and upgrading, 24/7 ops and security, build systems, failovers, and more. Stay focused on building great data-driven applications.

Learn More

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Engage with a wealth of insights in this thoughtful article, valued within the supportive DEV Community. Coders of every background are welcome to join in and add to our collective wisdom.

A sincere "thank you" often brightens someone’s day. Share your gratitude in the comments below!

On DEV, the act of sharing knowledge eases our journey and fortifies our community ties. Found value in this? A quick thank you to the author can make a significant impact.

Okay