簡體   English   中英

如何從 python 字典中找到特定鍵,然后從 Python 中的該鍵中獲取值

[英]How can I find a specific key from a python dict and then get a value from that key in Python

我有一個看起來像這樣的 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" 列表? 我無法按索引解析列表,因為列表順序隨機變化。

如果您只是在尋找“熊貓”,那么您可以遍歷列表,檢查名稱是否為“熊貓”,然后相應地檢索曲目列表。

否則,如果您想為許多不同的用戶這樣做,那將是低效的。 我將首先制作一個將用戶映射到列表中的索引的字典,然后將其用於每個用戶(我假設在執行代碼時列表不會被修改,盡管它可以在執行之間進行修改。)

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'])

如果您想獲取用戶Panda的曲目列表:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM