说明
《Python 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
有以下一个 Python 字典 dct,存放了类型及此类型的事物,这是一个关系数据。需要根据 lst 字符串(用中文逗号隔开),按顺序计算出对应事物的类型,类型之间同样用中文逗号隔开。本需求来自知乎。
数据与希望输出的结果如下:
dct = {
'植物': ['榕树', '杨树', '橡树'],
'动物': ['兔子', '老虎', '大象']
}
lst = '老虎,杨树,橡树,大象,榕树'
# 输出: str
'动物,植物,植物,动物,植物'
通过分析需求,我们的整体思路是,先建立一个映射表,映射表是个字典,字典的键为 lst 中每个动植物名称,值为动植物名称对应的分类。
然后再将 lst 字符拆分为列表迭代时利用以上的映射表得到类型名称列表。
最后将类型名称列表用中文逗号连接为一个整体字符。
先生成类型映射表。一个新的映射字典,key 为名称,value 为属性(动物或者植物):
new_dict = {}
for k, v in dct.items():
for i in v:
new_dict[i] = k
new_dict 的值为:
new_dict
# 输出,做了优化显示
{'榕树': '植物',
'杨树': '植物',
'橡树': '植物',
'兔子': '动物',
'老虎': '动物',
'大象': '动物'}
以上 for 循环操作可以用字典推导式生成新的字典:
{i:k for k, v in dct.items() for i in v}
# 输出以上同样结果
接下来拆分 lst 字符串:
lst.split(',')
# ['老虎', '杨树', '橡树', '大象', '榕树']
用映射表进行迭代计算:
lst2 = [new_dict[i] for i in lst.split(',')]
lst2
# ['动物', '植物', '植物', '动物', '植物']
最后再拼接为字符串:
','.join(lst2)
# '动物,植物,植物,动物,植物'
这样就完成了这个需求。
(完)
更新时间:2022-03-16 20:47:23 标签:python 字典 列表 键值