python - Converting a dictionary into a square matrix -


i wanting learn how convert dictionary square matrix. have read, may need convert numpy array , reshape it. not want use reshape want able based on information user puts in. in other words, want code give out square matrix no matter how many owners , breeds input user.

note: owners , breeds dictionary vary upon user input. user can input 100 names , 50 breeds, or can input 4 names , 5 breeds. in example, did 4 names , 3 dogs.

dict1 =  {'bob vs sarah': {'shepherd': 1,'collie': 5,'poodle': 8}, 'bob vs ann': {'shepherd': 3,'collie': 2,'poodle': 1}, 'bob vs jen': {'shepherd': 3,'collie': 2,'poodle': 2}, 'sarah vs bob': {'shepherd': 3,'collie': 2,'poodle': 4}, 'sarah vs ann': {'shepherd': 4,'collie': 6,'poodle': 3}, 'sarah vs jen': {'shepherd': 1,'collie': 5,'poodle': 8}, 'jen vs bob': {'shepherd': 4,'collie': 8,'poodle': 1}, 'jen vs sarah': {'shepherd': 7,'collie': 9,'poodle': 2}, 'jen vs ann': {'shepherd': 3,'collie': 7,'poodle': 2}, 'ann vs bob': {'shepherd': 6,'collie': 2,'poodle': 5}, 'ann vs sarah': {'shepherd': 0,'collie': 2,'poodle': 4}, 'ann vs jen': {'shepherd': 2,'collie': 8,'poodle': 2}, 'bob vs bob': {'shepherd': 3,'collie': 2,'poodle': 2}, 'sarah vs sarah': {'shepherd': 3,'collie': 2,'poodle': 2}, 'ann vs ann': {'shepherd': 13,'collie': 2,'poodle': 4}, 'jen vs jen': {'shepherd': 9,'collie': 7,'poodle': 2}} 

for example, want 4 x 4 matrix (again, user can input number of dog breeds 3 breeds not restriction), since there 4 owners.

i apologize ahead of time not putting in want end result , do. proud of myself making dict1 :). dictionary should in form similar below, not sure how incorporate different breeds. hard part me needing 1 matrix. plan on using matrix solver numpy has, hence why wanting figure out how square matrix dictionary.

      bob      sarah     ann     jen bob  sarah  ann  jen 

if can data in format

{name1: {name1:data, name2:data, name3:data, ...},   name2: {name1:data, name2:data, name3:data, ...},  ... } 

then can hand pandas dataframe , make you. data @ position row = name1 , col = name2 value of name1 vs name2. here code it:

from collections import defaultdict import pandas  result = defaultdict(dict) key,value in dict1.items():      names = key.split()      name1 = names[0]      name2 = names[2]          result[name1][name2] = value  df = pandas.dataframe(result).transpose() print(df) 

this gives following output:

                              ann                                  bob                                        jen                                      sarah ann    {'shepherd': 13, 'collie': 2, 'poodle': 4}  {'shepherd': 6, 'collie': 2, 'poodle': 5}  {'shepherd': 2, 'collie': 8, 'poodle': 2}  {'shepherd': 0, 'collie': 2, 'poodle': 4} bob     {'shepherd': 3, 'collie': 2, 'poodle': 1}  {'shepherd': 3, 'collie': 2, 'poodle': 2}  {'shepherd': 3, 'collie': 2, 'poodle': 2}  {'shepherd': 1, 'collie': 5, 'poodle': 8} jen     {'shepherd': 3, 'collie': 7, 'poodle': 2}  {'shepherd': 4, 'collie': 8, 'poodle': 1}  {'shepherd': 9, 'collie': 7, 'poodle': 2}  {'shepherd': 7, 'collie': 9, 'poodle': 2} sarah   {'shepherd': 4, 'collie': 6, 'poodle': 3}  {'shepherd': 3, 'collie': 2, 'poodle': 4}  {'shepherd': 1, 'collie': 5, 'poodle': 8}  {'shepherd': 3, 'collie': 2, 'poodle': 2} 

a simple conversion numpy array like:

numpy_array = df.as_matrix() print(numpy_array)  [[{'shepherd': 13, 'collie': 2, 'poodle': 4}   {'shepherd': 6, 'collie': 2, 'poodle': 5}   {'shepherd': 2, 'collie': 8, 'poodle': 2}   {'shepherd': 0, 'collie': 2, 'poodle': 4}]  [{'shepherd': 3, 'collie': 2, 'poodle': 1}   {'shepherd': 3, 'collie': 2, 'poodle': 2}   {'shepherd': 3, 'collie': 2, 'poodle': 2}   {'shepherd': 1, 'collie': 5, 'poodle': 8}]  [{'shepherd': 3, 'collie': 7, 'poodle': 2}   {'shepherd': 4, 'collie': 8, 'poodle': 1}   {'shepherd': 9, 'collie': 7, 'poodle': 2}   {'shepherd': 7, 'collie': 9, 'poodle': 2}]  [{'shepherd': 4, 'collie': 6, 'poodle': 3}   {'shepherd': 3, 'collie': 2, 'poodle': 4}   {'shepherd': 1, 'collie': 5, 'poodle': 8}   {'shepherd': 3, 'collie': 2, 'poodle': 2}]] 

Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -