如何在Python中检查列表中是否存在字符串?

2024-06-17 13:12:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有从API调用收到的以下JSON数据:

[     
       {
        "mediaAlgorithm": "G.722",
        "mediaDirection": "TX",
        "mediaFormat": "---",
        "mediaState": "OPENED",
        "mediaStream": "audioTx",
        "mediaType": "AUDIO",
      },
      {
        "mediaAlgorithm": "G.722",
        "mediaDirection": "RX",
        "mediaFormat": "---",
        "mediaState": "OPENED",
        "mediaStream": "audioRx",
        "mediaType": "AUDIO",
      }
]

使用以下代码获取字符串形式的“mediaStream”值,将此值与字符串列表进行比较,并打印出未出现在列表中的任何值:

^{2}$

由于JSON数据中没有“videoRx”和“videoTx”值,所以我希望print语句将被达到两次,并将这两个语句都打印给用户,但是print语句从未执行过。在

最初,我认为语法“ifstringnot inlist”存在问题,但是,以下编译没有错误:

if "my_channel" not in my_list:
    print("Not in the list")

有人能解释这里发生了什么吗?在

谢谢!在


Tags: 数据字符串json列表my语句audioprint
2条回答

如果你想检查哪些频道没有在json中提到,你应该遍历我的列表而不是json的数据

def parse_json_data(json_data):

    my_list = ["audioRx", "audioTx", "videoRx", "videoTx"]
    channel_types = [media_channel['mediaStream'] for media_channel in json_data]

    for media_channel in my_list:
        if media_channel not in channel_types:
            print("{0} is not in the list".format(media_channel))

首先,您可能需要检查json字符串是如何生成的,因为它在mediaType后面有额外的逗号,需要删除这些逗号才能成为有效的json字符串。在

然后可以使用any()检查列表中是否存在该值:

import json

json_str = """
    [
           {
            "mediaAlgorithm": "G.722",
            "mediaDirection": "TX",
            "mediaFormat": " -",
            "mediaState": "OPENED",
            "mediaStream": "audioTx",
            "mediaType": "AUDIO"
          },
          {
            "mediaAlgorithm": "G.722",
            "mediaDirection": "RX",
            "mediaFormat": " -",
            "mediaState": "OPENED",
            "mediaStream": "audioRx",
            "mediaType": "AUDIO"
          }
    ]
    """

def parse_json_data(json_data):

    my_list = ["audioRx", "audioTx", "videoRx", "videoTx"]
    channel_types = [media_channel['mediaStream'] for media_channel in json_data]

    for channel_type in my_list:
        if not any(channel_type in x for x in channel_types):
            print("{0} is not in the list".format(channel_type))

json_data = json.loads(json_str)
parse_json_data(json_data)

输出:

^{pr2}$

相关问题 更多 >