Creating dictionary of items from Excel with mutliple keys

Atri Mahapatra atri.mahapatra at gmail.com
Sat Aug 13 12:44:14 EDT 2016


I am trying to create a following dictionary. I am reading data from excel which has data in the following format:

Sl no:  Name Thickness Length Material Width Quantity Side 

It has 20 rows of data.


The dictionary for the 20 rows, I would like to make is 

Data_Dict = [ 
{ 'Name': 'X', 'Length': '10' , 'Width': '5', 'Quantity': 2 'Area': 50};
{ 'Name': 'Y', 'Length': '20' , 'Width': 10', 'Quantity': 1 'Area': 200};
.
.
.
.
till 20 rows
];

I would like to add another key 'Area' as shown above. I used the following code(s):

using openpyxl:
d={}
for i  in range(3,sheet.max_row+1):
    #for j in range(3,9):
        #for k in range(0,5):
          Name = sheet.cell(row= i,column=3).value
          Length =sheet.cell(row =i,column=6).value
          Breadth= sheet.cell(row=i,column=7).value
          Quantity = sheet.cell (row=i,column=8).value
          Area = sheet.cell(row =i,column=6).value*sheet.cell(row=i,column=7).value
          d[Name]= Length,Breadth,Quantity,Area

which gave an output like: 
['X': (10, 5, 2, 50), 'Y': (20, 10, 1, 2232600), 'Z': (5, 2, 1, 10), .............]

Another code using xlrd:

keys = [sheet.cell(2, col_index).value for col_index in range(0,8)]
print (keys)
dict_list = []
d = {}
for row_index in range(1, xl_sheet.nrows):
   for col_index in range(0,8):
   d = {keys[col_index]: xl_sheet.cell(row_index, col_index).value 
   for col_index in range(0,8)}
   dict_list.append(d)

print (dict_list)
which did not have the area and neither the output was little messy.



The main purpose is to sort the dictionary based on different criteria like Length or Area. I think the first one may be easier to sort. However if there are any better way to represent  the dictionary  and the code so that it can be sorted later based on different attributes please feel free to suggest. 


Thanks,
Atri 



More information about the Python-list mailing list