2017-10-13 1 views
0

Tout d'abord, je suis très nouveau à la programmation et c'est ma première question concernant la programmation. J'essaie actuellement d'automatiser des simulations dans greenius. J'ai besoin de créer beaucoup de scénarios qui remplaceront d'autres paramètres.itération sur dictionnaire (pas itérable) et la fusion de dictionnaires, python

Un dictionnaire de tous mes scénarios devrait ressembler à ceci:

{'S1': 'a1, b1', 'S2': 'a1, b2', 'S3': 'a2, b1', 'S4': 'a2,b2', 'S5': 'a3,b1', 'S6': 'a3, b2'} 

Mais si je tente le code suivant je ne reçois pas le résultat que je veux.

def callback7(): 
    ax = int(SZ1) 
    bx = int(SZ2) 
    for x in range(ax): 
    Label(top, text='a'+str(x+1), relief=SUNKEN, width=5).grid(row=x, column=0) 
    a.append(Entry(top, width=25)) 
    a[x].grid(row=x, column=1) 
    for y in range(bx): 
    Label(top, text='b'+str(y+1), relief=SUNKEN, width=5).grid(row=y, column=2) 
    b.append(Entry(top, width=25)) 
    b[y].grid(row=y, column=3) 
    B1 = Button(top, text='Save', width = 5,command=callback8).grid(row=0,column=4) 

def callback8(): 
    for entry in a: 
    Pa = entry.get() 
    dcta['a{0}'.format(i)] = Pa 
    i = i+1 
    for entry1 in b: 
    Pb = entry1.get() 
    dctb['b{0}'.format(j)] = Pb 
    j = j+1 
    for key1, value1 in dcta.items: 
    for key2, value2 in dctb.items: 
     ar = value1 
     br = value2 
     dctz['S{0}'.format(u)] = ar+'\t'+br 
     u = u+1 

L'erreur que je reçois ici est:

TypeError: 'builtin_function_or_method' object is not iterable 

Qu'est-ce que je fais mal ici?

+4

Vous devriez ** ** appel de la méthode: il est 'pour key1, valeur1 dans dcta.items()', etc. 'pas pour key1, valeur1 dans dcta.items'. –

+0

oh mon dieu et j'ai essayé de comprendre ce qui me manquait pendant des heures ... Merci beaucoup !! – Hayvanbroo

Répondre

-1

Modifiez l'alignement de votre code. L'alignement est faux. Il devrait être comme ci-dessous.

def callback7(): 
    ax = int(SZ1) 
    bx = int(SZ2) 
    for x in range(ax): 
     Label(top, text='a'+str(x+1), relief=SUNKEN, width=5).grid(row=x, column=0) 
     a.append(Entry(top, width=25)) 
     a[x].grid(row=x, column=1) 
    for y in range(bx): 
     Label(top, text='b'+str(y+1), relief=SUNKEN, width=5).grid(row=y, column=2) 
     b.append(Entry(top, width=25)) 
     b[y].grid(row=y, column=3) 
    B1 = Button(top, text='Save', width = 5,command=callback8).grid(row=0,column=4) 

def callback8(): 

    for entry in a: 
     Pa = entry.get() 
     dcta['a{0}'.format(i)] = Pa 
     i = i+1 
    for entry1 in b: 
     Pb = entry1.get() 
     dctb['b{0}'.format(j)] = Pb 
     j = j+1 
    for key1, value1 in dcta.items: 
     for key2, value2 in dctb.items: 
      ar = value1 
      br = value2 
      dctz['S{0}'.format(u)] = ar+'\t'+br 
      u = u+1 
+0

Non ce n'est pas le problème. Je l'ai collé mal dans le forum. – Hayvanbroo