下面是我的字典
path_map = defaultdict(lambda:defaultdict(lambda:(None,None)))
我在下面打印过这个词典(我只是粘贴了3个键的path_map:00-00-00-00-00-01到00-00-00-00-00-03)
for key in path_map:
print key,path_map[key]
00-00-00-00-00-01 defaultdict(<function <lambda> at 0x7f9062a17050>, {00-00-00-00-00-05: (1, None), 00-00-00-00-00-03: (2, 00-00-00-00-00-02), 00-00-00-00-00-02: (1, None), 00-00-00-00-00-01: (0, None), 00-00-00-00-00-04: (2, 00-00-00-00-00-02), '00-00-00-00-00-03': (None, None)})
00-00-00-00-00-02 defaultdict(<function <lambda> at 0x7f9062a170c8>, {00-00-00-00-00-04: (1, None), 00-00-00-00-00-02: (0, None), 00-00-00-00-00-03: (1, None), 00-00-00-00-00-01: (1, None), 00-00-00-00-00-05: (1, None)})
00-00-00-00-00-03 defaultdict(<function <lambda> at 0x7f9062a17140>, {00-00-00-00-00-03: (0, None), 00-00-00-00-00-05: (2, 00-00-00-00-00-02), 00-00-00-00-00-04: (2, 00-00-00-00-00-02), 00-00-00-00-00-02: (1, None), 00-00-00-00-00-01: (2, 00-00-00-00-00-02)})
但是当我传递这些输入(src:00-00-00-00-00-01,dst:00-00-00-00-00-03)时,我没有得到任何价值:
print path_map[src][dst][0]
print path_map[src][dst][1]
print src
print dst
输出:
None
None
00-00-00-00-00-01
00-00-00-00-00-03
有人可以解释为什么这样做?
请注意,我从mysql表获取src和dst的值,其中这些值已经以VARCHAR的形式存储。
答案 0 :(得分:0)
它与您在内部defaultdict
中定义的默认值完全相同:lambda:(None,None)
因此,notexistent path_map[src][dst]
的默认值为元组(None,None)
您会看到此类输出,因为(None, None)[0] == None
和(None,None)[1] == None
。