簡體   English   中英

python '雙重理解' 列表到 dict

[英]python 'double comprehension' list to dict

給定如下的數據結構“帖子”,是否有一種 pythonesque/dict 理解/有效的方法來創建一個 dict,其中每個 id 作為帖子的鍵:

posts = [{"ids":[1,2],...}, {"ids":[5, 6, 7], ...},...]
want = {1: {"ids":[1,2],..}, 2:{"ids":[1,2],...}, 5: {"ids":[5,6,7],...}, 6:{"ids":[5,6,7],..}, ...}

# long way
d = {}
for post in posts:
    for id in post['ids']:
        d[id] = post

# one comprehension - dicts created and disposed on each loop
d = {}
for post in posts:
    d.update({id: post for id in post['ids']})

我希望以下內容可行-但頂層看不到底層帖子

# ilegal: post not available 
d = {id: post for id in post['ids'] for post in posts}

有任何想法嗎? 我經常看到這樣的情況,而且循環看起來很丑

您可以使用字典理解:

posts = [{"ids":[1,2]}, {"ids":[5, 6, 7]}]
result = {i:b for b in posts for i in b['ids']}

Output:

{1: {'ids': [1, 2]}, 2: {'ids': [1, 2]}, 5: {'ids': [5, 6, 7]}, 6: {'ids': [5, 6, 7]}, 7: {'ids': [5, 6, 7]}}

暫無
暫無

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

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