【问题标题】:How can I find a specific key from a python dict and then get a value from that key in Python如何从 python dict 中找到特定键,然后从 Python 中的该键中获取值
【发布时间】:2021-05-24 00:47:29
【问题描述】:

我有一个看起来像这样的 python 字典:

[
    {
        "timestamp": 1621559698154,
        "user": {
            "uri": "spotify:user:xxxxxxxxxxxxxxxxxxxx",
            "name": "Panda",
            "imageUrl": "https://i.scdn.co/image/ab67757000003b82b54c68ed19f1047912529ef4"
        },
        "track": {
            "uri": "spotify:track:6SJSOont5dooK2IXQoolNQ",
            "name": "Dirty",
            "imageUrl": "http://i.scdn.co/image/ab67616d0000b273a36e3d46e406deebdd5eafb0",
            "album": {
                "uri": "spotify:album:0NMpswZbEcswI3OIe6ml3Y",
                "name": "Dirty (Live)"
            },
            "artist": {
                "uri": "spotify:artist:4ZgQDCtRqZlhLswVS6MHN4",
                "name": "grandson"
            },
            "context": {
                "uri": "spotify:artist:4ZgQDCtRqZlhLswVS6MHN4",
                "name": "grandson",
                "index": 0
            }
        }
    },
   
    {
        "timestamp": 1621816159299,
        "user": {
            "uri": "spotify:user:xxxxxxxxxxxxxxxxxxxxxxxx",
            "name": "maja",
            "imageUrl": "https://i.scdn.co/image/ab67757000003b8286459151d5426f5a9e77cfee"
        },
        "track": {
            "uri": "spotify:track:172rW45GEnGoJUuWfm1drt",
            "name": "Your Best American Girl",
            "imageUrl": "http://i.scdn.co/image/ab67616d0000b27351630f0f26aff5bbf9e10835",
            "album": {
                "uri": "spotify:album:16i5KnBjWgUtwOO7sVMnJB",
                "name": "Puberty 2"
            },
            "artist": {
                "uri": "spotify:artist:2uYWxilOVlUdk4oV9DvwqK",
                "name": "Mitski"
            },
            "context": {
                "uri": "spotify:playlist:0tol7yRYYfiPJ17BuJQKu2",
                "name": "I Bet on Losing Dogs",
                "index": 0
            }
        }
    }
]

例如,如何获取 user.name "Panda" 的值组,然后获取特定的 "track" 列表?我无法按索引解析列表,因为列表顺序随机变化。

【问题讨论】:

    标签: python json list dictionary spotify


    【解决方案1】:

    如果你只是在寻找“熊猫”,那么你可以遍历列表,检查名称是否为“熊猫”,然后相应地检索曲目列表。

    否则,如果您想为许多不同的用户这样做,那将是低效的。我会首先制作一个将用户映射到列表中的索引的字典,然后为每个用户使用它(我假设列表没有被修改你执行代码,虽然它可以在执行之间进行修改。)

    user_to_id = {data[i]['user']['name']: i for i in range(len(data))} # {'Panda': 0, 'maja': 1}
    
    def get_track(user):
        return data[user_to_id[user]]['track']
    
    print(get_track('maja'))
    print(get_track('Panda'))
    

    data 是您提供的列表。

    或者,也许只是直接制作曲目字典:

    tracks = {item['user']['name']: item['track'] for item in data}
    
    print(tracks['Panda'])
    

    【讨论】:

      【解决方案2】:

      如果您想获取用户Panda 的曲目列表:

      tracks = [entry['track'] for entry in data if entry['user']['name'] == 'Panda']
      

      【讨论】:

        猜你喜欢
        • 2020-07-22
        • 1970-01-01
        • 2022-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-04
        • 1970-01-01
        • 2015-10-15
        相关资源
        最近更新 更多