>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.iteritems():
... print k, vKuinka saan tuosta 'gallahad'n ja 'robin'n otettua muuttujiksi?
En ole ihan varma mitä tarkoitat, mutta olisiko tästä apua:
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k in knights.keys():
... print k
...
gallahad
robin
>>> k0,k1 = knights.keys()
>>> k0
'gallahad'
>>> k1
'robin'Jos haluat niiden mukaan nimetyt muuttujat, voit lisätä ne locals-funktion palauttamaan sanakirjaan. Tässä on vielä esimerkkifunktiot, jotka vastaavat PHP:n samannimisiä funktiota: compact yhdistää paikallisia muuttujia yhdeksi sanakirjaksi, extract purkaa sanakirjan paikallisiksi muuttujiksi. Ensimmäisenä parametrina niille pitää antaa tuo locals-sanakirja. Voi niillä tietysti siirtää asioita muustakin sanakirjasta toiseen.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
def compact(dict_src, *keys):
return dict((i, dict_src[i]) for i in keys)
def extract(dict_dest, dict_src):
for i, j in dict_src.items():
dict_dest[i] = j
a = 1
b = 2
c = compact(locals(), 'a', 'b')
print(c)
# {'a': 1, 'b': 2}
d = {'a': 3, 'b': 4}
extract(locals(), d)
print(a, b)
# 3 4Metabolix kirjoitti:
Jos haluat niiden mukaan nimetyt muuttujat...
Nimenomaan tätä hain.
Yllättävää kyllä, että tuon joutuu noinkin "hankalasti" tekemään. Onko varma, ettei tuohon ole mitään yksinkertaisempaa?
Siis, jos koitan vielä selventää asiaa:
Muuttuja Arvo
=======================
1. k "gallahad"
2. gallahad "jotain"
Kiitos vinkeistä!
No jos karsii Metabolixin esimerkin äärimmilleen, niin näinhän se toimii:
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
>>> for k, v in knights.iteritems():
... locals()[k] = v
...
>>> gallahad
'the pure'
>>> robin
'the brave'
>>>Muoks:
lainaus:
Muuttuja Arvo ======================= 1. k "gallahad" 2. gallahad "jotain"
Et varmaan näin yksinkertaista asiaa hakenut...
>>> k = 'gallahad' >>> gallahad = 'jotain' >>>
...vaan nimenomaan mainitsemastasi dictistä rakennettuja muuttujia?
Kiitoksia, selvisi tämäkin asia.
Chiman kirjoitti:
...vaan nimenomaan mainitsemastasi dictistä rakennettuja muuttujia?
Kyllä, juuri tätä hain.
Aihe on jo aika vanha, joten et voi enää vastata siihen.