Python字典

Python字典

1. 字典类型的基本概念

        通过任意键信息查找一组数据中值信息的过程叫映射, Python语言中通过字典实现映射。Python语言中的字典可 以通过大括号({})建立,建立模式如下:
        {<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>}

        其中,键和值通过冒号连接,不同键值对通过逗号隔开。

>>>Dcountry={"中国":"北京", "美国":"华盛顿", "法国":"巴黎"} 

>>>print(Dcountry)

{'中国': '北京', '法国': '巴黎', '美国': '华盛顿'}

        字典打印出来的顺序与创建之初的顺序不同 ,这不是错误。字典是集合类型的延续 ,各个元素并没有顺序之分。如果想保持一个集合中元素的顺序,需要使用列表,而不是字典。

        字典最主要的用法是查找与特定键相对应的值,这通过索引符号来实现。

>>>Dcountry["中国"]

'北京'

一般来说 ,字典中键值对的访问模式如下 ,采用中括号格式: <值> = <字典变量>[<键>]

字典中对某个键值的修改可以通过中括号的访问和赋值实现:

>>>Dcountry["中国"]='大北京'

>>>print(Dcountry)

{'中国': '大北京', '法国': '巴黎', '美国': '华盛顿'}

2. 字典键的特性

字典值可以是任何的 Python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住;

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。

3. 字典类型的操作

通过中括号可以增加新的元素

>>>Dcountry={"中国":"北京", "美国":"华盛顿", "法国":"巴黎"}

>>>Dcountry["英国"]="伦敦"   

>>>print(Dcountry)

{'中国': '北京', '法国': '巴黎','美国': '华盛顿', '英国': '伦敦'}

直接使用大括号( {} )可以创建一个空的字典 ,并通过 中括号( [] )向其增加元素。

>>>Dp={}

>>>Dp['2^10']=1024

>>>print(Dp)

{'2^10': 1024}

函数和方法

描述

<d>.keys()

返回所有的键信息

<d>.values()

返回所有的值信息

<d>.items()

返回所有的键值对

<d>.get(<key>,<default>) 

键存在则返回相应值,否则返回默认值

<d>.pop(<key>,<default>)

键存在则返回相应值,同时删除键值对,否则返回默认值

<d>.popitem()

随机从字典中取出一个键值对,以元组(key, value) 形式返回

<d>.clear()

删除所有的键值对

del <d>[<key>]

删除字典中某一个键值对

<key> in <d>

如果键在字典中返回True,否则返回False

>>> Dcountry= { " 中国 ":" 北京 ", " 美国 ":" 华盛顿 ", " 法国 ":" 巴黎 " }
>>>Dcountry.keys()
dict_keys([' 中国 ', ' 美国 ', ' 法国 '])
>>>list(Dcountry.values())
[' 北京 ', ' 华盛顿 ', ' 巴黎 ']
>>>Dcountry.items()
dict_items([(' 中国 ', ' 北京 '), (' 美国 ', ' 华盛顿 '), (' 法国 ', ' 巴黎')])
>>> ' 中国 ' in Dc ountry # 只对键进行判断
True
>>>Dcountry.ge t(' 美国 ', ' 悉尼 ') #' 美国 ' 在字典中存在
' 华盛顿 '
>>>Dcountry.ge t(' 澳大利亚 ', ' 悉尼 ') #' 澳大利亚 ' 在字典中不存在
'悉尼 '

与其他组合类型一样 ,字典可以通过for… in语句对其元 素进行遍历 ,基本语法结构如下:

for   <变量名>  in  <字典名>:

        语句块

>>>for key in Dcountry:

print(key)

中国

美国

法国

 4. 总结

字典是实现键值对映射的数据结构 ,请理解如下基本原则: 

  • 1.字典是一个键值对的集合,该集合以键为索引,一个键信息只对应一个值信息;
  • 2.字典中元素以键信息为索引访问;
  • 3.字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。

5. 练习题

 1.已知如下5个学生的成绩:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬ “Jack”:67, “May”:89, “Rose”:56, “June”:90, “Black”:88‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬ 直接用字典存储 编程实现成绩查询:输入姓名,输出成绩,若姓名不存在,则输出“No found!”

参考代码:

# coding=utf-8
dit = {"Jack": 67, "May": 89, "Rose": 56, "June": 90, "Black": 88}
name = input("输入姓名:")
for key in dit:
    if key == name:
        print(key, dit[key])
        break
else:
    print("No found!")

2.输入5个人的电话到通讯录,输入格式为每人占一行,名字和电话号码空格隔开,如:

马云   15093488129

张晓  19282937665

……

然后进行查询:输入姓名,输出该人的联系电话,若姓名不存在,则输出“查无此人”

参考代码

# coding=utf-8
dit = {}
for i in range(5):
    s = input().split()
    dit[s[0]] = s[1]
name = input("输入姓名:")
for key in dit:
    if key == name:
        print(key, dit[key])
        break
else:
    print("No found!")
#测试用例    
# 张三 15093488127
# 李四 19282937668
# 王五 17562717052
# 黄六 18864722537
# 牛八 15064775097

 输出结果:


3.统计票数 :班委会选举。输入全班人数n,每人投一票,票面为候选人姓名(Tom、Jerry、 May),姓名如果不存在,则选票作废。统计各候选人得票数,并输出结果。

参考代码:

# coding=utf-8

n = eval(input("输入全班人数:"))
dit = {"Tom": 0, "Jerry": 0, "May": 0}
i = 0
for i in range(n):
    name = input()
    if name in dit:
        dit[name] += 1
print("------------运行结果------------")
{print(key, dit[key]) for key in dit}
# 测试用例:
'''
5
Tom
Jerry
Tom
May
March
'''

运行结果: 


4.输入一串字符串,统计各个字符出现的次数

参考代码:

# coding=utf-8

s = input("输入字符串:")
dit = {}
print(s)
for x in s:
    dit[x] = dit.get(x, 0)+1
print("------------运行结果------------")
{print(key, dit[key]) for key in dit}
'''
测试用例:abczxcasdfg
'''

实例运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W_chuanqi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值