這個問題在這里已經有了答案: 反轉/反轉字典映射 32 個答案 16 小時前關閉。
我有一本字典如下:
d = {'a': ['b'], 'c': ['d']}
我想更改字典的位置,使其如下所示:
d_new = {'b': 'a', 'd': 'c'}
我嘗試了以下方法,但由于第二個術語是我原始字典 (d) 中的一個串列,我無法完成此操作。
d = {'a': ['b'], 'c': ['d']}
for k in list(d.keys()):
d[d.pop(k)] = k
print(d)
uj5u.com熱心網友回復:
您可以在 dict 理解中使用可迭代解包,如下所示:
{v: k for k, (v,) in d.items()}
>>> d = {'a': ['b'], 'c': ['d']}
>>> {v: k for k, (v,) in d.items()}
{'b': 'a', 'd': 'c'}
這假定所有值都是一個元素的串列,并且您只需要串列中的第一個元素。
否則,您可以使用這個更合適的代碼:
{v[0] if isinstance(v, list) else v: k for k, v in d.items()}
uj5u.com熱心網友回復:
使用串列解包的主題變體:
d = {'a': ['b'], 'c': ['d']}
d = {v: k for k, [v] in d.items()}
print(d)
如果值(串列)碰巧包含多個元素并且您只對第一個元素感興趣,那么:
d = {v:k for k, [v,*_] in d.items()}
當然,即使每個串列只有一個元素,也可以使用它
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465127.html
上一篇:如果條件為真,則推入陣列
