""" How to convert 2 lists into a dictionary in python """# list used for keys in dictionary
students =["Angela","James","Lily"]# list of values
scores =[56,76,98]# convert lists to dictionary
student_scores =dict(zip(students, scores))# print the dictionaryprint(student_scores)""" result should be
student_scores: -{
Angela: 56,
James: 76,
Lily: 98
},
"""
# Your Data list
names =["john","paul","george","ringo"]
job =["guitar","bass","guitar","drums"]
status =["dead","alive","dead","alive"]
dict_data =[{'name': name,'job': job,'status': status}for name,job,status inzip(names,jobs,statuses)]
column_names =['id','color','style']
column_values =[1,'red','bold']# Convert two lists into a dictionary with zip and the dict constructor
name_to_value_dict =dict(zip(column_names, column_values))# Convert two lists into a dictionary with a dictionary comprehension
name_to_value_dict ={key:value for key, value inzip(column_names, column_values)}# Convert two lists into a dictionary with a loop
name_value_tuples =zip(column_names, column_values)
name_to_value_dict ={}for key, value in name_value_tuples:if key in name_to_value_dict:pass# Insert logic for handling duplicate keys else:
name_to_value_dict[key]= value
# convert 2 list into dictionary
a =['gsw','lakers','clippers']
b =[1,2,3]
my_dict =dict(zip(a,b))print(my_dict)# {'gsw': 1, 'lakers': 2, 'clippers': 3}
# (*) unpacking operator# for positional vs keyword argument, see "03 functions"# for packing, see "03 functions" # * can unpack iterables eg tuple, list, strings etc to its elements. # ** can only unpack dictionary# convert range til list
l1 =[range(5)]print(l1)#[range(0, 5)]
l =[*range(5)]# * unpacking operatorprint(l)#[0, 1, 2, 3, 4]# unpacking a collection
my_tuple =(1,2,3,4,5,6,7)
i1,*i2, i3, i4 = my_tuple # the middle part of the tuple gets unpacked into a list in i2print(i1)print(i2)print(i3)print(i4)# 1# [2, 3, 4, 5]# 6# 7# merge containers
my_tuple =(1,2,3)
my_list =[4,5,6]
merged_list =[*my_tuple,*my_list]print(merged_list)# [1, 2, 3, 4, 5, 6]
dict_a ={'a':1,'b':2}
dict_b ={'c':3,'d':4}
merged_dict ={**dict_a,**dict_b}print(merged_dict)# {'a': 1, 'b': 2, 'c': 3, 'd': 4}# unpacking arguments passed to function calls# Ex 1: unpack collections into func argumentsdeffoo(a, b,*args,**kwargs):print(a, end =' ')for arg in args:#args is unpacked into an iterable objectprint(arg, end =' ')for key in kwargs:print(key, kwargs[key], end =' ')
foo(1,2,3,4,5, six=6, seven=7)# 1 3 4 5 six 6 seven 7
values =(1,2,3,4,5)
mydict ={'eight':8,'nine':9}
foo(*values,**mydict)#NB! * unpacking operator, otherwise passing a tuple + dict#1 3 4 5 eight 8 nine 9 #NB! ** for dict, otherwise only get keys# Ex 2: matching parameters with unpacked argumentsdefmyFun(a, b, c):print("a:", a)print("b:", b)print("c:", c)# keys in dictionary must be the same as names of parameters
kwargs ={"a":"One","b":"Two","c":"Three"}#dictionary
myFun(**kwargs)# passing a dictionary into myFun() by unpacking it and pass individual key:value pair# a: One# b: Two# c: Three