gpt4 book ai didi

python - 多对一映射(创建等价类)

转载 作者:太空狗 更新时间:2023-10-29 17:44:32 24 4
gpt4 key购买 nike

我有一个将一个数据库转换为另一个数据库的项目。原始数据库列之一定义行的类别。此列应映射到新数据库中的新类别。

例如,假设原始类别是:parrot、spam、cheese_shop、Cleese、Gilliam、Palin

这对我来说有点冗长,我想将这些行归类为 sketch, actor - 即,将所有草图和所有 Actor 定义为两个等价类。

>>> monty={'parrot':'sketch', 'spam':'sketch', 'cheese_shop':'sketch', 
'Cleese':'actor', 'Gilliam':'actor', 'Palin':'actor'}
>>> monty
{'Gilliam': 'actor', 'Cleese': 'actor', 'parrot': 'sketch', 'spam': 'sketch',
'Palin': 'actor', 'cheese_shop': 'sketch'}

这很尴尬——我更喜欢这样的东西:

monty={ ('parrot','spam','cheese_shop'): 'sketch', 
('Cleese', 'Gilliam', 'Palin') : 'actors'}

但这当然会将整个元组设置为键:

>>> monty['parrot']

Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
monty['parrot']
KeyError: 'parrot'

关于如何在 Python 中创建优雅的多对一字典有什么想法吗?

最佳答案

在我看来,您有两个顾虑。首先,你最初是如何表达你的映射的,也就是说,你如何将映射输入到你的 new_mapping.py 文件中。其次,映射在重新映射过程中如何工作。这两个表示没有理由相同。

从您喜欢的映射开始:

monty = { 
('parrot','spam','cheese_shop'): 'sketch',
('Cleese', 'Gilliam', 'Palin') : 'actors',
}

然后转换成你需要的映射:

working_monty = {}
for k, v in monty.items():
for key in k:
working_monty[key] = v

制作:

{'Gilliam': 'actors', 'Cleese': 'actors', 'parrot': 'sketch', 'spam': 'sketch', 'Palin': 'actors', 'cheese_shop': 'sketch'}

然后使用 working_monty 完成工作。

关于python - 多对一映射(创建等价类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1921027/

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