反转python字典,其中的值是列表

2024-10-06 12:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,里面有键和值

d = {'A':['A1','A2','A3'],'B':['B1','B2']}

我想要这样的输出

inv_d = {'A1':'A','A2':'A','A3':'A','B1':'B','B2':'B'}

我正在这样做

inv_d  = {v1 for v1 in v:k for k, v in d.items()} 

获取错误

  File "<ipython-input-14-96f1a52e0304>", line 2
    inv_d  = {v1 for v1 in v:k for k, v in d.items()}
                            ^
SyntaxError: invalid syntax

Tags: ina2for字典a1错误ipythonitems
3条回答

只需对您的解决方案稍加修改,即可获得:

>>> {v1:k for k, v in d.items() for v1 in v}
{'A1': 'A', 'A2': 'A', 'A3': 'A', 'B1': 'B', 'B2': 'B'}
{i:k for k,v in d.items() for i in v}

输出:

{'A1': 'A', 'A2': 'A', 'A3': 'A', 'B1': 'B', 'B2': 'B'}

您必须将代码重写为以下内容:

>>> inv_d  = {v1:k for k, v in d.items() for v1 in v}
>>> inv_d
{'A1': 'A', 'A2': 'A', 'A3': 'A', 'B1': 'B', 'B2': 'B'

简短的解释。假设您只想使用normal for循环执行此操作,您可以编写以下代码

inv_d = {}
for k, v in d.items():
  for v1 in v:
    inv_d[k] = v1

要将其转换为单个dict理解,您必须保持for循环的相同顺序:

{... for k, v in d.items()  for v1 in v}

相关问题 更多 >