繁体   English   中英

尝试添加列表元素时字典中的关键错误

[英]Key error in dictionary when try to add a list element

我正在尝试在具有此最终重组的字典中添加一个计数: {'stationA':[2,3], 'stationB':[1,0]}

 if start_station_name not in my_station_dict:
                my_station_dict["station_name"]=start_station_name
                my_station_dict[start_station_name][0]=0
 my_station_dict[start_station_name][0] += 1

 if stop_station_name not in my_station_dict:
            my_station_dict["station_name"] = stop_station_name
            my_station_dict[stop_station_name][1] = 0
 my_station_dict[stop_station_name][1] += 1

但我明白了

my_station_dict[start_station_name][0]=0
KeyError: 'N 6 St & Bedford Ave'

          
my_station_dict["station_name"]=start_station_name

您正在将“station_name”添加为字典中的键,但随后尝试使用键 start_station_name 访问它。 要清楚,您的代码正在创建这个:

{'station_name': 'N 6 St & Bedford Ave'}

当你真的想要这个时:

{'N 6 St & Bedford Ave': [0, 0]}

这是一个简单的更新:

if start_station_name not in my_station_dict:
    my_station_dict[start_station_name] = [0, 0]
my_station_dict[start_station_name][0] += 1

if stop_station_name not in my_station_dict:
    my_station_dict[stop_station_name] = [0, 0]
my_station_dict[stop_station_name][1] += 1

这是一种方法来做我认为你在问的事情:

my_station_dict = {}

def foo(start_station_name, stop_station_name):
    if start_station_name not in my_station_dict:
        my_station_dict[start_station_name]=[0]*2
    my_station_dict[start_station_name][0] += 1

    if stop_station_name not in my_station_dict:
        my_station_dict[stop_station_name]=[0]*2
    my_station_dict[stop_station_name][1] += 1

trips = [['A', 'B'], ['A', 'C'], ['A', 'D'], ['B', 'C'], ['D', 'B']]
for start, stop in trips:
    foo(start, stop)

print(my_station_dict)

Output:

{'A': [3, 0], 'B': [1, 2], 'C': [0, 2], 'D': [1, 1]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM