Python - 检查字典中是否存在列表项

时间:2017-10-28 15:22:57

标签: python list dictionary nested

我有一个包含列表的字典,如下面的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:

2 个答案:

答案 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