为什么这个嵌套的字典理解不适用于Python?

时间:2018-03-09 22:06:44

标签: python dictionary-comprehension

nested_dict = { b: { a: some_other_source_dict[b][a] or {} for a in a_list } for b in b_list }

如果存在some_other_source_dict[b][a],则正确的输出应为:

nested_dict = { b_key_1: { a_key_1: a_val_1, a_key_2: a_val_2 },
                b_key_2: { a_key_1: a_val_3, a_key_2: a_val_4 } }

如果它不存在,则输出应为:

nested_dict = { b_key_1: { a_key_1: {}, a_key_2: {} },
                b_key_2: { a_key_1: {}, a_key_2: {} } }

1 个答案:

答案 0 :(得分:1)

some_other_source_dict[b][a]如果不存在,则不返回假值,只是错误。你需要像{ a: some_other_source_dict[b][a] for a in a_list } if "some_other_source_dict" in globals() else {}这样的东西。优选地,您应该有一些方法来确定是否定义它而无需检查globals()