JeAffectation des valeurs d'une liste aux valeurs d'une autre liste
a = [price1, price2]
b = [[108455, 106406, 103666, 101408, 98830], [3926, 4095, 426]]
Comment puis-je automatiser l'attribution a[0]
égale à b[0]
et a[1]
à b[1]
?
JeAffectation des valeurs d'une liste aux valeurs d'une autre liste
a = [price1, price2]
b = [[108455, 106406, 103666, 101408, 98830], [3926, 4095, 426]]
Comment puis-je automatiser l'attribution a[0]
égale à b[0]
et a[1]
à b[1]
?
Voulez-vous associer les chaînes dans a
avec les valeurs dans b
? IE le nom price1
au premier élément de b? Si donc vous voulez un dictionnaire:
d = {}
# i is the current position in a
# key is the value at that position
for i, key in enumerate(a):
d[key] = b[i]
Voulez-vous juste écraser ce qui est dans b avec un? Son aussi simple que
a[0]=b[0]
ou
a = b
'dict (zip (a, b))' serait beaucoup plus pythonique. En supposant que c'est ce qu'il veut réellement. –
Pas réel clairement ce que vous cherchez, que diriez-vous:
>>> price1 = 10000
>>> price2 = 22222
>>> a = [price1, price2]
>>> b = [[108455, 106406, 103666, 101408, 98830], [3926, 4095, 426]]
>>>
>>> merged_ab = {a_item: b_item for a_item, b_item in zip(a,b)}
>>> merged_ab
{10000: [108455, 106406, 103666, 101408, 98830], 22222: [3926, 4095, 426]}
>>>
En fait, zip()
seul fait sans le clavetage.
>>> zip(a,b)
[(10000, [108455, 106406, 103666, 101408, 98830]), (22222, [3926, 4095, 426])]
Pas besoin de comprendre un dictionnaire (ce qui est Python3 +). 'dict (zip (a, b))' est tout ce dont vous avez besoin. –
Lukas, oui dict (zip (a, b)) fait la même chose, cependant, les compréhensions de dictionnaire * sont * disponibles en 2.7 aussi. – monkut
vous avez raison sur la compréhension dictée et 2.7 - comment est-ce doux? :) –
Je pense que vous essayez de faire quelque chose comme ça
b = [[108455, 106406, 103666, 101408, 98830], [3926, 4095, 426]]
price1, price2 = b
ou sur une seule ligne
price1, price2 = [[108455, 106406, 103666, 101408, 98830], [3926, 4095, 426]]
Une autre possibilité est de créer un objet mutable avec un attribut pour maintenir la prix
>>> class Price(object):
... def __init__(self, value=None):
... self.value = value
... def __repr__(self):
... return "Price({})".format(self.value)
...
>>> price1 = Price()
>>> price2 = Price()
>>> a = [price1, price2]
>>> b = [[108455, 106406, 103666, 101408, 98830], [3926, 4095, 426]]
>>> for i,j in zip(a, b):
... i.value = j
...
>>> a
[Price([108455, 106406, 103666, 101408, 98830]), Price([3926, 4095, 426])]
Dans votre "tout sur une ligne", vous n'avez même pas besoin de l'extérieur '[]'. (c'est-à-dire que vous pouvez décompresser un tuple au lieu d'une liste). – mgilson
Comment est-ce que wha Tu veux faire autre chose que 'a = b'? – BrenBarn
Que voulez-vous dire par 'automatiser'? Votre question ne semble pas assez claire. – xiaohan2012
Si 'price1' et' price2' sont des variables dont vous voulez modifier les valeurs, vous rencontrez le problème dans une direction étrange. Pourquoi ne pas simplement utiliser 'b [0]' partout où vous auriez utilisé 'price1'? Si ce n'est pas ce que vous essayez de faire, j'ai peur de ne pas comprendre. –