Python映射类型之dict详解

  • Post category:Python

Python映射类型之dict详解

什么是dict?

dict是Python中的一个映射类型,它可以存储一组无序的键值对(key-value),其中键(key)必须是不可变的类型(比如字符串、数字、元组),而值(value)可以是任意类型。

dict的基本操作

创建一个空的dict

my_dict = {}

或者使用dict()函数:

my_dict = dict()

添加键值对

my_dict['name'] = 'John'
my_dict['age'] = 30

也可以使用update()方法添加多个键值对:

my_dict.update({'address': '123 Main St', 'phone': '555-1234'})

删除键值对

使用del关键字可以删除某个键值对:

del my_dict['name']

也可以使用pop()方法,它会返回被删除的值:

age = my_dict.pop('age')

获取键值对

可以使用[]运算符来获取某个键对应的值:

print(my_dict['name'])

但是如果该键不存在,则会抛出KeyError异常。为了避免这种情况,可以使用get()方法:

print(my_dict.get('name', 'default_value'))

这个方法可以指定当该键不存在时所返回的默认值。

判断是否存在某个键

可以使用in关键字来判断是否存在某个键:

if 'name' in my_dict:
    print('Name is in the dictionary')

dict的常用方法

clear()

清空所有键值对:

my_dict.clear()

copy()

复制一个副本:

my_dict_copy = my_dict.copy()

keys()

返回所有键的列表:

keys = my_dict.keys()

如果要得到一个可迭代对象而不是列表,可以使用iterkeys()方法(Python 2.x)或keys()方法(Python 3.x)。

values()

返回所有值的列表:

values = my_dict.values()

同样,如果要得到一个可迭代对象而不是列表,可以使用itervalues()方法(Python 2.x)或values()方法(Python 3.x)。

items()

返回所有键值对的列表:

items = my_dict.items()

同样,如果要得到一个可迭代对象而不是列表,可以使用iteritems()方法(Python 2.x)或items()方法(Python 3.x)。

len()

返回键值对的数量:

print(len(my_dict))

示例说明

统计单词出现的次数

text = 'This is a test of the emergency broadcast system. This is only a test.'
words = text.split()
word_count = {}

for word in words:
    if word not in word_count:
        word_count[word] = 1
    else:
        word_count[word] += 1

print(word_count)

输出:

{'This': 2, 'is': 2, 'a': 2, 'test': 2, 'of': 1, 'the': 1, 'emergency': 1, 'broadcast': 1, 'system.': 1, 'only': 1}

创建一个简单的数据库

database = {
    'Jenna': {'age': 25, 'salary': 50000},
    'Tom': {'age': 32, 'salary': 70000},
    'Nina': {'age': 19, 'salary': 30000}
}

def print_info(name):
    info = database.get(name)
    if info:
        print(f"{name}'s age is {info['age']} and salary is ${info['salary']}.")
    else:
        print(f"{name} is not in the database.")

print_info('Jenna')
print_info('Bob')

输出:

Jenna's age is 25 and salary is $50000.
Bob is not in the database.

以上就是使用dict的基本操作和常用方法,以及两个示例的详细说明。