Python字典——dict

本文深入讲解了Python字典的基本概念、定义方式、特性、方法及应用。覆盖了字典的创建、更新、删除、查看等操作,以及如何利用字典进行数据统计,适合初学者和进阶者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典的定义

字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中。
注意:值value可以取任何数据类型,但键key必须是不可变的,如字符串,数字或元组。
字典也是一个无序的数据集合,通常输出的顺序和定义的顺序不一致。

  • 定义空字典(两种方法)
d = {}
print(d)
print(type(d))

d1 = dict()
print(d1)
print(type(d1))

在这里插入图片描述

  • 定义字典(两种方法)
d1 = {
    'westos': [190, 521, 231],
    'mysql': [100, 99, 88]
}
print(d1)


d2 = dict(westos=[190, 521, 231], mysql=[100, 99, 88])
print(d2)

在这里插入图片描述

  • 当字典中key的value相同时,可以使用字典的fromkeys批量创建。
    注意:fromkeys第一个参数是一个可迭代的对象,第二个参数类型随意
d = dict()
d = d.fromkeys(['http','https'],[8080,443,80])
print(d)

print({}.fromkeys({'A','B'},100))

在这里插入图片描述

  • 字典的嵌套
student = {
    2013118118: {
        'name': 'mac',
        'age': 18,
        'score': {
            "Chinese": 88.5,
            "Math": 98.5
        }
    },
    201731955: {
        'name': 'mac',
        'age': 24,
    }
}
print(student[201731955])
print(student[2013118118]['score']['Math'])

在这里插入图片描述

字典的特性

  • 通过key打印value
dic = {
    1: 'http',
    'b': 'nginx'
}
print(dic[1],dic['b'])

在这里插入图片描述

  • 成员操作符
dic = {
    1: 'http',
    'b': 'nginx'
}

print(1 in dic)
print('b' not in dic)

在这里插入图片描述

  • for循环遍历字典
dic = {
    1: 'http',
    'b': 'nginx'
}
# 只打印key
for k in dic:
    print(k)

# 只打印value
for k in dic:
    print(dic[k])
for k,v in dic.items():
    print(v)

# 打印key,value
for k in dic:
    print(k,dic[k])
for k,v in dic.items():
    print(k,v)

在这里插入图片描述

字典的方法

字典的增加

  • 单个键值对,直接增加service['https']=443
service = {
    'http':80,
    'mysql':3306,
    'smtp':25
}
service['https']=443
print(service)

在这里插入图片描述

  • 添加多个key-value值,字典的update方法
service = {
    'http':80,
    'mysql':3306,
    'smtp':25
}

service_backup = {
    'https':443,
    'ssh':22
}
service.update(service_backup)
print(service)

service.update(flask=9000,tomcat=8080)
print(service)

在这里插入图片描述

  • setdefault添加key值,如果key值存在,不做修改;如果key值不存在,添加对应的key-value
service = {
    'http': 80,
    'mysql': 3306,
    'smtp': 25
}

service.setdefault('http',8000)
service.setdefault('oracle',44575)
print(service)

在这里插入图片描述

字典的删除

  • 使用del删除del dict[key]
service = {
    'http': 80,
    'mysql': 3306,
    'smtp': 25
}
del service['http']
print(service)

在这里插入图片描述

  • pop()删除指定的key的key-value
    如果key存在,删除,并返回删除key对应value
    如果key不存在,报错
service = {
    'http': 80,
    'mysql': 3306,
    'smtp': 25
}

item = service.pop('http')
print(item)
print(service)

在这里插入图片描述

  • popitem()删除字典中最后一个key-value对,以元组形式返回
service = {
    'http': 80,
    'mysql': 3306,
    'smtp': 25
}

item = service.popitem()
print(item)
print(service)

在这里插入图片描述

  • clear清除字典内容
service = {
    'http': 80,
    'mysql': 3306,
    'smtp': 25
}

service.clear()
print(service)

在这里插入图片描述

字典的查看

  • 查看字典的key值
services = {
    'http':80,
    'mysql':3306,
    'smtp':25
}

print(services.keys())

在这里插入图片描述

  • 查看字典的value值
services = {
    'http':80,
    'mysql':3306,
    'smtp':25
}

print(services.values())

在这里插入图片描述

  • 查看字典的k-v值
services = {
    'http':80,
    'mysql':3306,
    'smtp':25
}

print(services.items())

在这里插入图片描述

  • 查看key的value值
    key不存在,默认返回None
    key不存在,有default,则返回default值
services = {
    'http':80,
    'mysql':3306,
    'smtp':25
}

print(services.get('http'))
print(services.get(1))

在这里插入图片描述

字典的应用练习

  • 数字重复统计
"""
 # 数字重复统计:
    1). 随机生成1000个整数;
    2). 数字的范围[20, 100],
    3). 升序输出所有不同的数字及其每个数字重复的次数;
"""

方法1:

import random

li = []
numDic = {}
for i in range(1000):
    li.append(random.randint(20, 100))
li.sort()
numSet = set(li)
for i in numSet:
    numDic[i] = li.count(i)
print(numDic)
for k in numDic:
    print('%d 出现了 %d 次' %(k,numDic[k]))

在这里插入图片描述

方法2:

import random

all_num = []
for item in range(1000):
    all_num.append(random.randint(20, 100))

print(all_num)
sorted_nums = sorted(all_num)
num_dict = {}

for num in sorted_nums:
    if num in num_dict:
        num_dict[num] += 1
    else:
        num_dict[num] = 1

print(num_dict)

在这里插入图片描述

  • 统计重复单词次数
"""
输入:'westos hello python westos'
输出:
westos 2
hello 1
python 1
"""
while True:
    str = input("请输入一段话:")
    strLi = str.split()
    wordDic = {}
    for i in strLi:
        if i in wordDic:
            wordDic[i] += 1
        else:
            wordDic[i] = 1
    print(wordDic)
    for k,v in wordDic.items():
        print(k,':',v)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值