我正在尝试建立一个列表,其中有一个键指向多个值。我认为最好的方法是将键值指向列表。然而,我在构建dict中的列表时遇到了问题
num_items = len(decoded_data['data']['arrivalsAndDepartures'])
buses = list()
busdict = dict()
val = list()
for i in range(num_items):
decoded_data['data']['arrivalsAndDepartures']
bus = decoded_data['data']['arrivalsAndDepartures'][i]['routeId']
buses.append(bus)
try:
busdict[bus]
except KeyError:
busdict[bus] = [i]
print("except "+ bus , str(i))
else:
val = busdict[bus]
busdict[bus] = [val].append(i)
print("else "+ bus ,val, str(i))
这给了我奇怪的结果。你知道吗
$ python test.py
except 40_590 0
except 40_554 1
except 40_592 2
else 40_590 [0] 3
except 1_122 4
except 40_577 5
else 40_590 None 6
根据上述测试结果,第三次按“40_”键时,该值被清除。你知道吗
list.append
是一个就地操作,返回None
。因此,您正在清除其中先前存储的列表。你可以这样修但是解决这个问题的最佳方法是使用^{} 函数(如果找不到指定的键,它将赋值并返回默认值),如下所示
但是解决这个问题的最好方法是使用^{} ,就像这样
list.append()
不返回值。像这样使用:顺便说一下:use four spaces for indents!你知道吗
相关问题 更多 >
编程相关推荐