Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-检查字典中是否存在列表项_Python_List_Dictionary_Nested - Fatal编程技术网

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

Python-检查字典中是否存在列表项,python,list,dictionary,nested,Python,List,Dictionary,Nested,我有一本字典,里面有一个列表,比如下面的两个例子 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

我有一本字典,里面有一个列表,比如下面的两个例子

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'}]}]}
我想检查“tones”中是否存在值,然后进行后续处理。如果没有,请继续下一步。我尝试了以下方法,结果总是导致索引超出范围错误

if len(some_json["speaking_tone"][0]["tones"][0]["tone_name"]) > 0:

您可以使用任何:

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

如果
某个json[“说话的音调”][0][“音调”]
是一个空列表,会发生什么情况?您将收到一个错误,因为您试图从空列表中访问某些内容(
[“tone\u 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")

你需要更多的警卫。例如,在第一个示例中,
some_json[“speaking_tone”][0][“tones”]=[]
,因此当然会出现索引超出范围的异常。如果第一个示例是可能的,则无法检查空数组中的0位置。也许你应该先检查“tones”是否为空,如果不是,请检查内容。