python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python字典一键多值

Python中的字典一键多值的四种写法小结

作者:小庄-Python办公

在 Python 中,字典的键是唯一的,但可以通过将值与列表、集合等数据结构结合,实现一个键对应多个值,以下是几种常见写法,希望对大家有所帮助

1. 背景介绍

在 Python 中,字典的键是唯一的,但可以通过将值与列表、集合等数据结构结合,实现一个键对应多个值。以下是几种常见写法:

2. 方法1—使用列表存储多个值

my_dict = {}

# 添加值
my_dict.setdefault('key1', []).append('value1')
my_dict.setdefault('key1', []).append('value2')

# 结果
print(my_dict)  # 输出: {'key1': ['value1', 'value2']}

3. 方法2—使用集合存储多个值(确保唯一性)

my_dict = {}

# 添加值
my_dict.setdefault('key1', set()).add('value1')
my_dict.setdefault('key1', set()).add('value2')
my_dict.setdefault('key1', set()).add('value1')  # 重复值不会被添加

# 结果
print(my_dict)  # 输出: {'key1': {'value1', 'value2'}}

4. 方法3—使用 defaultdict 简化操作

from collections import defaultdict

# 使用列表
my_dict = defaultdict(list)
my_dict['key1'].append('value1')
my_dict['key1'].append('value2')

print(my_dict)  # 输出: defaultdict(<class 'list'>, {'key1': ['value1', 'value2']})

# 使用集合
my_dict = defaultdict(set)
my_dict['key1'].add('value1')
my_dict['key1'].add('value2')
my_dict['key1'].add('value1')  # 重复值不会被添加

print(my_dict)  # 输出: defaultdict(<class 'set'>, {'key1': {'value1', 'value2'}})

5. 方法4—手动检查键是否存在

my_dict = {}

# 添加值
if 'key1' not in my_dict:
    my_dict['key1'] = []
my_dict['key1'].append('value1')
my_dict['key1'].append('value2')

print(my_dict)  # 输出: {'key1': ['value1', 'value2']}

6.方法补充

python 字典一键赋多值

方案一:

(1) list作为dict的值,值允许重复,append添加值

key = 0
value = [1,5]
exp = dict()
exp.setdefault(key,[]).append(value) 
value = [2,5]
exp.setdefault(key,[]).append(value)
print(exp)

输出:

{0: [[1, 5], [2, 5]]}

(2)set作为dict的值,值不允许重复,add添加值

key = 0
value = 1
exp = dict()
exp.setdefault(key,set()).add(value) 
value = 2
exp.setdefault(key,set()).add(value)
print(exp)

输出:

{0: {1, 2}}

方案二:

使用collections.defaultdict方法

(1)collections.defaultdict(list),值可以重复

import collections
 
key = 0
value = 1
exp = collections.defaultdict(list)
exp[key].append(value)
value = 1
exp[key].append(value)
print(exp)

输出:

defaultdict(<class 'list'>, {0: [1, 1]})

(2)collections.defaultdict(set),值不允许重复

import collections
 
key = 0
value = 1
exp = collections.defaultdict(set)
exp[key].add(value)
value = 1
exp[key].add(value)
value = 5
exp[key].add(value)
print(exp)

输出:

defaultdict(<class 'set'>, {0: {1, 5}}) 

到此这篇关于Python中的字典一键多值的四种写法小结的文章就介绍到这了,更多相关Python字典一键多值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

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