这是我正在查看的问题:获取字典列表。在这里面,你可以有有效和无效结果的明显案例。因此,您在列表推导中编写了一个简单的三元运算符,以获取失败时的默认消息。但是,它为每个失败提供了默认值。
如果您知道所有列表的长度相同,是否可以将其减少为同一理解内的单个失败消息?
此示例代码中的目标是,如果键不在列表内的字典中,则确定其值为“DEFAULT”。为了测试,完成了一个简单的打印:
print(out)
>>> ['DEFAILT']
这是我的测试数据和一个简单、成功的结果:
lis_dic = [{1:'One',2:'Two',3:'Three'},
{1:'Ichi',2:'Ni',3:'San'},
{1:'Eins',2:'Zvi',3:'Dri'}]
key = 1
out = [i[key] for i in lis_dic]
print(out)
>>> ['One', 'Ichi', 'Eins']
错误处理尝试:
key = 4
out = [i[key] for i in lis_dic if key in i]
print(out)
>>> []
out = [i.get(key, 'DEFAILT') for i in lis_dic]
print(out)
>>> ['DEFAILT', 'DEFAILT', 'DEFAILT']
out = [i[key] if key in i else 'DEFAULT' for i in lis_dic ]
print(out)
>>> ['DEFAILT', 'DEFAILT', 'DEFAILT']
如您所见,所有这些都导致没有结果或三个结果,而不是单个结果。
我也尝试移动 else 的位置,但我不断收到语法错误。
哦,这没用,因为它可以更改有效结果的顺序:
out = list(set([i[key] if key in i else 'DEFAULT' for i in lis_dic ]))