我有一个包含列表的字典,如下面的2个示例所示。
some_json = {'speaking_tone': [{'speaking_id': 0, 'spoken_text': 'register my device', 'tones': []}]}
some_json = {'speaking_tone': [{'speaking_id': 0, 'spoken_text': 'So kind of you to help with the issue', 'tones': [{'tone_name': 'Polite'}]}]}
我想检查“音调”中是否存在值,然后进行后续处理。如果没有,请继续执行下一步。我尝试了以下内容,它们总是导致索引超出范围错误。
if len(some_json["speaking_tone"][0]["tones"][0]["tone_name"]) > 0:
答案 0 :(得分:1)
如果some_json["speaking_tone"][0]["tones"]
是空列表,会发生什么?您将收到错误,因为您尝试从空列表中访问某些内容(["tone_name"]
)。为避免首先检查some_json["speaking_tone"][0]["tones"]
是否为空。
some_json = {'speaking_tone': [{'speaking_id': 0, 'spoken_text': 'register my device', 'tones': []}]}
if len(some_json["speaking_tone"][0]["tones"]) == 0:
print("Empty")
else:
print("Something")
# Another way
if not some_json["speaking_tone"][0]["tones"]:
print("Empty")
else:
print("Something here")
答案 1 :(得分:0)
您可以使用any
:
some_json = {'speaking_tone': [{'speaking_id': 0, 'spoken_text': 'register my device', 'tones': []}]}
if any(i["tones"] for i in some_json["speaking_tone"]):
pass
如果要检查音调中是否存在目标值,可以尝试:
target_val = "something"
if any(target_val in i["tones"] for i in some_json["speaking_tone"]):
pass