Reading Time: 1 minutes
Interchanging Data Structures in Python
You can make any data structure from any other data structure using the builtin constructors list(), tuple(), dict(), set(), frozenset() of their respective classes. This interchanging operation is incredibly helpful in certain situations e.g. while reversing a tuple, while removing duplicates from a list, extracting keys and values from a dictionary, making a set immutable by initializing a frozenset from it etc. Examples:
# list to tuple # transforming a mutable list into an immutable tuple >>> myList = [number for number in range(1, 11)] >>> myTuple = tuple( myList ) >>> print("Type: ", type( myTuple ), ";", "Contents: ", myTuple) Type: <class 'tuple'> ; Contents: (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # tuple to list # sorting a tuple >>> tupleOfNumbers = (5, 4, 2, 3, 1) >>> listOfNumbers = list(tupleOfNumbers) >>> listOfNumbers.sort() >>> listOfNumbers [1, 2, 3, 4, 5] >>> newTupleOfNumbers = tuple(listOfNumbers) >>> newTupleOfNumbers (1, 2, 3, 4, 5) # list to set # removing duplicates >>> myList = [number for number in range(1, 11)] >>> myList2 = [number for number in range(5, 16)] >>> myList + myList2 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] >>> mySet = set( myList + myList2 ) >>> mySet {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} # set to frozenset # making a set immutable >>> mySet = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} >>> mySet.add(16) >>> mySet {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} >>> myImmutableSet = frozenset( mySet ) >>> myImmutableSet.add(17) # Traceback information AttributeError: 'frozenset' object has no attribute 'add' # dict to list # initializing a new dictionary from the keys of an exisitng dictionary >>> myDictionary = {'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5} >>> myListOfKeys = list( myDictionary.keys() ) >>> myListOfKeys ['one', 'four', 'five', 'three', 'two'] >>> myNewDictionary = dict.fromkeys( myListOfKeys ) >>> myNewDictionary {'one': None, 'four': None, 'two': None, 'three': None, 'five': None}