2017-09-20 6 views
0

Comment obtenir les clés et les valeurs numériques d'une liste et les placer dans leurs propres tableaux en utilisant python? Bellow est mon code jusqu'ici:Séparez les clés et les valeurs dans une liste en utilisant python?

def make_chart(size, items): #this creates the grid 
    keys = list(items.keys()) 
    chart = list() 
    row = [] 
    for r in range(len(keys)): 
     for i in range(size): 
      row.append({"w":0, "v":0, "keys":[]}) 
     chart.append(row) 
    return chart 

def fill_chart(size, items, chart): 
    keys = list(items.keys()) 
    values = list(items.values()) 
    weight = [] 
    #w, h = size +1, len(keys) 


''' 
here is where I need to separate the values for "w" and "v" and place them in their own arrays or lists that way I can fill the rest of the grid with zeros then try and run a Knapsack Problem on the information. 
''' 


def main(): 
    iphone = {"w": 1, "v": 3000} #w is weight and v is value 
    guitar = {"w": 1, "v": 2000} 
    tablet = {"w": 2, "v": 3000} 
    dog = {"w":1, "v": 4000} 
    items = {"iphone":iphone, "guitar":guitar, "tablet":tablet, "dog":dog} 

    chart = make_chart(4, items) 
    chart = fill_chart(4, items, chart) 


if __name__ == "__main__": 
    main() 

Je reçois actuellement ([ « w »: 1, « v'3000]) lorsque j'imprime les valeurs, mais je peux accéder à la valeur de w ou la valeur v placez-les dans leurs propres tableaux à utiliser. J'ai essayé de référencer d'autres tutoriels et d'autres questions sur stackoverflow et d'autres sites mais rien ne semble correspondre à ce style.

+0

'all_w = [item [ "w"] pour l'article en ligne]' –

+0

alors où vous essayez de séparer les clés et valeurs? de l'objet 'items'? – Chinny84

Répondre

0
chart=chart[0]   
values=[[val[key] for val in chart] for key in chart[0]] # indexed values for each key. loop over list for each key. 
w,v,key=values   

ou

chart=chart[0] 
val=zip(*[i.values() for i in chart])  #transpose list of values 
w,v,key=map(list,val)    
+2

Une petite explication serait de rendre cette réponse plus utile. –