将列表的值分配给另一个列表的值

时间:2012-11-01 01:33:43

标签: python

我有

a = [price1, price2]
b = [[108455, 106406, 103666, 101408, 98830], [3926, 4095, 426]]

如何自动将a[0]分配到b[0],将a[1]分配到b[1]

3 个答案:

答案 0 :(得分:2)

我认为你正在尝试做这样的事情

b = [[108455, 106406, 103666, 101408, 98830], [3926, 4095, 426]]
price1, price2 = b

或全部在一行

price1, price2 = [[108455, 106406, 103666, 101408, 98830], [3926, 4095, 426]]

另一种可能性是创建一个具有属性的可变对象来保存价格

>>> 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])]

答案 1 :(得分:0)

您是否要将a中的字符串关联b中的值相关联? IE名称price1到b中的第一个元素?如果是这样,你想要一本字典:

 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]

你是否只想用b覆盖 b?它就像

一样简单
 a[0]=b[0]

 a = b

答案 2 :(得分:0)

不清楚你在寻找什么,怎么样:

>>> 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]}
>>>

实际上,zip()单独执行此操作而没有键控。

>>> zip(a,b)
[(10000, [108455, 106406, 103666, 101408, 98830]), (22222, [3926, 4095, 426])]