Given a Matrix, Convert to Dictionary with elements in 1st row being keys, and subsequent rows acting as values list.
Input : test_list = [[4, 5, 7], [10, 8, 4], [19, 4, 6], [9, 3, 6]]
Output : {4: [10, 19, 9], 5: [8, 4, 3], 7: [4, 6, 6]}
Explanation : All columns mapped with 1st row elements. Eg. 4 -> 10, 19, 9.
Input : test_list = [[4, 5, 7], [10, 8, 4], [19, 4, 6], [9, 3, 7]]
Output : {4: [10, 19, 9], 5: [8, 4, 3], 7: [4, 6, 7]}
Explanation : All columns mapped with 1st row elements. Eg. 7 -> 4, 6, 7.
Method #1 : Using list comprehension + dictionary comprehension
This is one of the ways in which this task can be performed. In this, list comprehension is responsible for construction of values and mapping and dictionary conversion is done using dictionary comprehension.
Python3
test_list = [[ 4 , 5 , 7 ], [ 10 , 8 , 3 ], [ 19 , 4 , 6 ], [ 9 , 3 , 6 ]]
print ( "The original list : " + str (test_list))
res = {test_list[ 0 ][idx]: [test_list[ele][idx]
for ele in range ( 1 , len (test_list))]
for idx in range ( len (test_list[ 0 ]))}
print ( "Reformed dictionary : " + str (res))
|
OutputThe original list : [[4, 5, 7], [10, 8, 3], [19, 4, 6], [9, 3, 6]]
Reformed dictionary : {4: [10, 19, 9], 5: [8, 4, 3], 7: [3, 6, 6]}
Method #2 : Using dictionary comprehension + zip()
This is yet another way to solve this problem. In this, we map all column elements with each other using zip() and dictionary comprehension is used to perform remaking of dictionary.
Python3
test_list = [[ 4 , 5 , 7 ], [ 10 , 8 , 3 ], [ 19 , 4 , 6 ], [ 9 , 3 , 6 ]]
print ( "The original list : " + str (test_list))
res = {ele[ 0 ]: list (ele[ 1 :]) for ele in zip ( * test_list)}
print ( "Reformed dictionary : " + str (res))
|
OutputThe original list : [[4, 5, 7], [10, 8, 3], [19, 4, 6], [9, 3, 6]]
Reformed dictionary : {4: [10, 19, 9], 5: [8, 4, 3], 7: [3, 6, 6]}