【发布时间】:2014-09-26 14:33:28
【问题描述】:
有没有处理不存在的字典键的好方法?
我有一个基于字典的数据库,其中的键看起来像这样
ID
ver
sub_ver
A
B
C
我想比较每个 ID/ver/sub_ver 的 A、B、C 键的值,以确保:
(A==B and C==None) or (A==C and B==None) or (A==B==C)
但并非所有“ID”都有 A 和 B 以及 C 键/值
我的代码不是很好:
**loops outside of this for ID/ver/sub_ver**
try:
A = data_structure[ID][ver][sub_ver]['A']
B = data_structure[ID][ver][sub_ver]['B']
C = data_structure[ID][ver][sub_ver]['C']
except KeyError:
try:
A = data_structure[ID][ver][sub_ver]['A']
B = data_structure[ID][ver][sub_ver]['B']
C = None
except KeyError:
try:
A = data_structure[ID][ver][sub_ver]['A']
B = None
C = data_structure[ID][ver][sub_ver]['C']
接下来我检查所有值是否匹配
我使用 set() 以防 A/B/C 列表不按顺序排列
if not any((set(A)==set(B) and C==None, \
set(A)==set(C) and B==None, \
set(A)==set(B)==set(C))):
set_of_problems.append([ID, ver, sub_ver, [A, B, C])
当涉及到字典中不存在的键时,是否有更好的方法来执行嵌套的 try/except ?
【问题讨论】:
-
您可能对此感兴趣。 stackoverflow.com/questions/3797957/…
标签: python dictionary key try-catch