如何更改字典的位置?
How to change the positions of a dictionary?
我有一个字典如下:
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)
您可以像这样在字典理解中使用可迭代解包:
{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()}
使用列表解包的主题变体:
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()}
当然,即使每个列表只有一个元素也可以使用
我有一个字典如下:
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)
您可以像这样在字典理解中使用可迭代解包:
{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()}
使用列表解包的主题变体:
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()}
当然,即使每个列表只有一个元素也可以使用