Trying to work with nested dictionaries.... Taking input from user about how many input items he has with him(he enters a no), for each item, the code asks him to enter two numbers, from which, the code shall tell the largest and lower number in the range of nos entered...
PFB Code:
def how_many_sets():
global set_nos_list
set_nos_list = []
defaults = {"range": [], "items": [], "largest": 0, "lowest": 0, "difference": 0}
global set_no
set_no = int(input('How many sets?'))
if set_no < 1 or set_no > 10:
print('error')
else:
for num in range(set_no):
set_nos_list.append(num)
print(set_nos_list)
global set_dict
set_dict = dict.fromkeys(set_nos_list, defaults)
return set_no
def take_sets():
for item in set_nos_list:
list_per_pair = list(map(int, input().split()))
if len(list_per_pair) != 2:
print('There is an error in the no of items, For finding the range two items should be there in a list')
return
elif (list_per_pair[0] < 2) or (list_per_pair[1] > 1000000) or (list_per_pair[0] > list_per_pair[1]):
print(' error')
return
else:
print(item)
set_dict[item]["range"] = list_per_pair
temp_item_list = []
for value in range(list_per_pair[0], list_per_pair[1] + 1):
# print(value)
temp_item_list.append(value)
print(temp_item_list)
#set_dict[num]['items'] = temp_item_list
print(set_dict)
def main():
how_many_sets()
take_sets()
# Write code here
main()
The line set_dict[item]["range"] = list_per_pair
gives me an error, the set_dict gets updated with the last item value only despite the loop being iterating over all values....
How many sets?2
[0, 1]
3 6
0
[3, 4, 5, 6]
4 7
1
[4, 5, 6, 7]
{0: {'range': [3, 6], 'items': [], 'largest': 0, 'lowest': 0, 'difference': 0}, 1: {'range': [4, 7], 'items': [], 'largest': 0, 'lowest': 0, 'difference': 0}}
where as I want output something like this:
{0: {'range': [4, 7], 'items': [], 'largest': 0, 'lowest': 0, 'difference': 0}, 1: {'range': [4, 7], 'items': [], 'largest': 0, 'lowest': 0, 'difference': 0}}