我想将一个列表附加到另一个列表,然后将第一个列表用作另一个要附加到顶级列表的条目的模板。但是当我修改下面的列表时,上面的列表也会被修改。
trip = []
trips = []
trip_day = [1, 2]
bd_year = '2020'
bd_start_mo = 7
leg_dates = []
days = [7, 14]
leg1 = {'leg_date': 7, 'item2': 'green'}
leg2 = {'leg_date': 7, 'item2': 'red'}
trip = [leg1, leg2]
for idx,day in enumerate(days): # loop thru each instance of trip
for leg in trip_day: # loop thru each leg in a trip
# build list of actual dates for each leg
leg_dates.append(day + (leg - 1))
for leg in range(0,len(trip_day)): # loop thru each leg and update actual date in the dict
trip[leg]['leg_date'] = leg_dates[leg]
a = list(trip)
trips.append(a)
print(trips)
leg_dates = []
a =[]这将导致:
[[{'leg_date': 14, 'item2': 'green'}, {'leg_date': 15, 'item2': 'red'}],
[{'leg_date': 14, 'item2': 'green'}, {'leg_date': 15, 'item2': 'red'}]]我希望前两个条目的leg_dates为7和8,而不是14和15。我尝试使用list()并使用中间列表"a“进行复制,但没有成功。
那么,当我修改"trip“时,如何防止"trips”更改,或者换句话说,如何向列表追加值而不是引用?“扩展”不是我想要的。我的“Python速成教程”一书没有提到这一点。这是非常令人沮丧的,因为我来自C/MATLAB背景。
发布于 2020-05-12 04:29:41
trip = []
trips = []
trip_day = [1, 2]
bd_year = '2020'
bd_start_mo = 7
leg_dates = []
days = [7, 14]
leg1 = {'leg_date': 7, 'item2': 'green'}
leg2 = {'leg_date': 7, 'item2': 'red'}
trip = [leg1, leg2]
for idx,day in enumerate(days): # loop thru each instance of trip
for leg in trip_day: # loop thru each leg in a trip
# build list of actual dates for each leg
leg_dates.append(day + (leg - 1))
for leg in range(0,len(trip_day)): # loop thru each leg and update actual date in the dict
trip[leg]['leg_date'] = leg_dates[leg]
a = list(trip)
trips.append(a)
leg_dates = []
a =[]
print(trip)输出
[{'leg_date': 7, 'item2': 'green'}, {'leg_date': 8, 'item2': 'red'}]
[{'leg_date': 14, 'item2': 'green'}, {'leg_date': 15, 'item2': 'red'}]https://stackoverflow.com/questions/61738465
复制相似问题