python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python字典key对应多value

Python字典一个key对应多个value几种实现方式

作者:酒酿小圆子~

python中字典的健和值是一一对应的,如果对字典进行添加操作时如果健的名字相同,则当前健对应的值就会被覆盖,有时候我们想要一个健对应多个值的场景,这篇文章主要给大家介绍了关于Python字典一个key对应多个value几种实现方式的相关资料,需要的朋友可以参考下

python的字典是一个key对应一个value,如果想要一个key对应多个value,那么可以用以下几种方法来实现。

方法一:创建key对应列表

name_list = ['Mary', 'Jack']
age_list = [10, 12]
stu_dict = {
    'name': name_list,
    'age': age_list
}

print(stu_dict)

输出结果如下:

{'name': ['Mary', 'Jack'], 'age': [10, 12]}

方法二:使用dict.setdefault()方法

stu_dict_1 = {}
key1 = 'name'
key2 = 'age'
# 使key对应一个空列表,并使用.append()方法对空列表进行元素的添加
stu_dict_1.setdefault(key1, []).append('Mary')
stu_dict_1.setdefault(key1, []).append('Jack')
stu_dict_1.setdefault(key2, []).append(10)
stu_dict_1.setdefault(key2, []).append(12)

print(stu_dict_1)

输出结果如下:

{'name': ['Mary', 'Jack'], 'age': [10, 12]}

方法三:使用collections.defaultdict类

from collections import defaultdict
stu_dict_2 = defaultdict(list)
stu_dict_2['name'].append('Mary')
stu_dict_2['name'].append('Jack')
stu_dict_2['age'].append(10)
stu_dict_2['age'].append(12)

print(stu_dict_2)

输出结果如下:

defaultdict(<class 'list'>, {'name': ['Mary', 'Jack'], 'age': [10, 12]})

defaultdict是Python内建dict类的一个子类,其使用一个factory_function作为输入,这个factory_function可以是list、set、str等等。

dict = defaultdict(factory_function)

在实际使用过程中,我们除了需要字典一个key对应多个value,可能还有对多个value值去重的需求,这时,只需要创建一个 defaultdict(set) 的字典即可,样例如下:

stu_dict_3 = defaultdict(set)
stu_dict_3['name'].add('Mary')
stu_dict_3['name'].add('Jack')
stu_dict_3['age'].add(10)
stu_dict_3['age'].add(10)

print(stu_dict_3)

输出结果如下:

defaultdict(<class 'set'>, {'name': {'Mary', 'Jack'}, 'age': {10}})

总结

到此这篇关于Python字典一个key对应多个value几种实现方式的文章就介绍到这了,更多相关Python字典key对应多value内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文