2015-10-08 16 views
5

varsayalım bir listene kadar farklı değişkenlere bazı vales atamak için iteratif

[('maindb', 'localhost', 'postgres', 'root')] 

var ve ne olacak, iteratif 4 farklı değişkenlere yolu bu vales atamak istediğiniz?

Ben

[db, host, user, password] = [x for x in user_list] 

denedi ama bu çalışmıyor. Hata: yapmaya çalışıyorsun ne

ValueError: need more than 1 value to unpack 
+1

'[('maindb', 'localhost', 'postgres', 'kök')]' olduğunu

accounts = [Account(x) for x in user_list] 
:

from collections import namedtuple Account = namedtuple('Account', ['db', 'host', 'user', 'password']) account = Account(user_list[0]) print(account.db, account.host, account.user, account.password) 

Ve bunlar namedtuples bir listesini oluşturmak için: Burada namedtuple kullanıcının iş nasıl bir liste. Ama bu 4 dizginin bir tuple olan 1 öğe içeren bir liste. Genel olarak, format x, y, z = [1, 2, 3] 'dır. –

+0

Listeniz bilerek tek parça 4-tuple olan bir singleton mu? – sgrg

+0

Ayrıca, listenin her zaman 4 değeri olacağını biliyor musunuz? – sgrg

cevap

7

you should use this.

db, host, user, password = user_list[0] 
2

çok açık değil:

[x for x in user_list] 

sadece orijinal USER_LIST aynı mı ama teşekkür varsayarak 4- listesi var tuples sonra yapabilirsin:

for x in user_list: 
    db, host, user, password = x 
    <logic> 

Veya daha da kısaca:

for db, host, user, password in user_list: 
    <logic> 

o zaman namedtuple bakmak olabilir kodun okunabilirliği artırmak ve adlandırılmış dizilerini listesini oluşturmak için bu değerlere erişim adında istiyorum.