gpt4 book ai didi

python - 反转默认字典

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:32 24 4
gpt4 key购买 nike

我有一个 defaultdict(list),其中我的键是元组类型,我的值是元组列表。我想反转这本字典,我已经尝试过使用 zip 函数,但这不起作用

下面是我的字典结构示例

{(2, '-', 3): [('Canada', 'Trudeau'),('Obama', 'USA')]}

有没有什么办法可以扭转这种情况,以便我以相反的方式获得键和值

最佳答案

由于您有一个列表字典,您需要使列表成为一个不可变类型,以用作 Python 字典中的键。

您可以使列表值元组:

>>> di={(2, '-', 3): [('Canada', 'Trudeau'),('Obama', 'USA')]}
>>> {tuple(v):k for k, v in di.items()}
{(('Canada', 'Trudeau'), ('Obama', 'USA')): (2, '-', 3)}

或者把它们变成字符串:

>>> {repr(v):k for k, v in di.items()}
{"[('Canada', 'Trudeau'), ('Obama', 'USA')]": (2, '-', 3)}

如果需要,您可以将 key 转换回列表:

>>> from ast import literal_eval
>>> literal_eval("[('Canada', 'Trudeau'), ('Obama', 'USA')]")
[('Canada', 'Trudeau'), ('Obama', 'USA')]

>>> list((('Canada', 'Trudeau'), ('Obama', 'USA')))
[('Canada', 'Trudeau'), ('Obama', 'USA')]

(顺便说一句:如果代码可能有任何外部字符串,请不要使用 eval——在生产代码中使用 ast.literal_eval,如此处示例所示。)

最后,考虑这个字典:

di={'key 1':'val', 'key 2': 'val', 'key 3': 'val'}

当您反转键和值时,您将在添加每个键“val”时丢失数据。

您可以使用默认字典来解决重复值成为键的问题:

dd=defaultdict(list)
for k, v in di.items():
dd[v].append(k)

>>> dd
defaultdict(<type 'list'>, {'val': ['key 1', 'key 2', 'key 3']})

关于python - 反转默认字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33599347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com