Python中字典的详细用法

#字典
#字典是Python中唯一内建的映射类型。字典中没有特殊的顺序,但都是存储在一个特定的键(key)下面,键可以是数字,字符串,甚至是元组

#一、字典的使用
#在某些情况下,字典比列表更加适用:
#1、表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组
#2、存储文件修改时间,用文件名作为键;
#3、数字电话\地址薄

#1、使用列表创建一个电话本,(这里用字符串表示电话号码,以0开头的数字回会被编译成8进制数字)
name=["A","B","C","D"]
phone=["2341","9102","3158","0142","5551"]
print(phone[name.index("B")])
#这样做可以,但是不实用

#二、创建和使用字典
#创建一个字典,字典由多个键与其对应的值构建成的键-值对组成,中间由冒号隔开,项之间用逗号隔开,字典由大括号括起来。空字典由{}组成
#字典中的键是唯一的,而值不唯一
phonebook={"Alice":"2431",‘Beth‘:‘9102‘,‘Cecil‘:‘3258‘}

#1、dict函数,可以使用dict函数,通过其他映射(比如其他字典)或者(键,值)对的序列建立字典
items=[(‘name‘,‘Gumby‘),(‘age‘,42)]
d=dict(items)
print(d)
print(d[‘name‘])

#dict函数也可以通过关键字参数来创建字典
a=dict(name="CY",num=42)
print(a[‘name‘])

#2、基本字典的操作
#大部分操作与序列相似

#返回字典中键值对的数量
print(len(a))
#普通索引
a=dict(name="CY",num=42)
print(a["name"])

#给字典中的key赋值
a["name"]="Challenger"
print(a)

#del 删除key
del a["name"]
print(a)

#使用in来检测字典中key是否存在
print("num" in  a)

#与列表的不同之处
# 键类型:字典的键类型不一定为整形数据,键可以是任意不可变类型,比如浮点类型(实型)、字符串或者元租
# 自动添加:即使键起初在字典中并不存在,也可以为它赋值,字典就会建立新的项。而(在不使用append方法或者其他类似操作的情况下)不能将值关联到列表范围之外的索引上
# 表达式 key in dictionary,查找的是键,而不是值。表达式 value in list,用来查找值,而不是索引。
#在字典中检查键的成员资格比在列表中检查值的成员资格更高,数据结构规模越大,俩者的效率差距越明显
#字典示例
#一个简单的数据库
#字典使用人名作为键值。每个人用另一个字典来表示,其键‘phone‘和‘addr‘分别表示他们的电话号码和地址
people={
    ‘Alice‘:{
        ‘phone‘:‘2341‘,
        ‘addr‘:‘Fpp driver 23‘
    },

    ‘Beth‘:{
        ‘phone‘:‘9102‘,
        ‘addr‘:‘Bar street 42‘
    },

    ‘Cecil‘:{
        ‘phone‘:"3158",
        ‘addr‘:‘Baz avenue 90‘
    }
}

#针对电话号码的地址使用的描述性标签,会在打印输出的时候用到
lable={
    ‘phone‘:‘phone number‘,
    ‘addr‘:‘address‘
}

name=input(‘Name: ‘)
#查找电话号码还是地址?
request=input(‘Phone number(p) or address(a)?‘)
#使用正确的键值
if request==‘p‘:
    key=‘phone‘
if request==‘a‘:
    key=‘addr‘
#如果名字是字典中的有效键值才打印信息
if name in people:
    print("%s‘s %s is %s."%(name,lable[key],people[name][key]))
#4字典方法
#1、clear方法
#clear方法清除字典中所有的项,这个是原地操作,类似(list.sort)所以无返回值(或者是返回None)
d={}
d[‘name‘]=‘CY‘
d[‘age‘]=23
print(d)
returned_value=d.clear()
print(d)
print(returned_value)
#使用clear的意义是真正清空原来的字典
#情况一,将x关联到一个空字典可以清空x,但是不会影响到y,y还关联原来的字典。
x={}
y=x
x[‘key‘]=‘value‘
print(y)
x={}
print(x)
print(y)
#情况二,使用clear方法可以清空原来的字典
x1={}
y1=x1
x1["key"]="value"
print(y1)
x1.clear()
print(x1)
print(y1)
#2、copy方法返回一个具有相同键值对的新字典(这个方法实现的是浅复制,因为值本身是相同的,而不是副本),使用copy复制过来的字典,如果替换值时不受影响,如果修改(增,删)值,原始字典也会改变

x={‘username‘:‘admin‘,‘machines‘:[‘foo‘,‘bar‘,‘baz‘]}
y=x.copy()
y[‘username‘]=‘mlh‘
y[‘machines‘].remove(‘bar‘)
print(y)
print(x)

#避免上述问题,可以使用深复制 deepcopy函数
from copy import deepcopy
d={}
d[‘name‘]=[‘Alfred‘,‘Bertrand‘]
c=d.copy()
dc=deepcopy(d)
d[‘name‘].append(‘Clive‘)
print(c)
print(dc)

#3、fromkeys方法使用给定的键建立新的字典,每个键都对应一个None
print({}.fromkeys([‘name‘,‘age‘]))
#以上方法使用空字典,建立另一个字典有些多余,可以直接使用dict方法
print(dict.fromkeys([‘name‘,‘age‘]))
#也可以指定默认值
print(dict.fromkeys([‘name‘,‘age‘],‘(unknown)‘))

#4、get方法是很宽松的访问字典的方法,不使用get,访问字典中不存在的项会出错,会返回none
d={}
print(d.get(‘name‘))
#还可以自定义"默认值"
print(d.get(‘name‘,"N/A"))
#如果键存在,get使用方法和普通字典查询一样
d[‘name‘]=‘CY‘
print(d.get(‘name‘))
#使用get方法实现电话本的功能
people={
    ‘Alice‘:{
        ‘phone‘:‘2341‘,
        ‘addr‘:‘Fpp driver 23‘
    },

    ‘Beth‘:{
        ‘phone‘:‘9102‘,
        ‘addr‘:‘Bar street 42‘
    },

    ‘Cecil‘:{
        ‘phone‘:"3158",
        ‘addr‘:‘Baz avenue 90‘
    }
}

lable={
    ‘phone‘:‘phone number‘,
    ‘addr‘:‘address‘
}

name=input(‘Name: ‘)

request=input(‘Phone number(p) or address(a)?‘)

if request==‘p‘:
    key=‘phone‘
if request==‘a‘:
    key=‘addr‘

person=people.get(name,{})
lable=lable.get(key,key)
result=person.get(key,‘not available‘)
print("%s‘s %s is %s."%(name,lable,result))
#5、items
#item方法将字典所有的项以列表方式返回,返回时没有特定的次序
# 3.x 里面,iteritems()和viewitems()这两个方法都已经废除了,而items()得到的结果是和2.x里面viewitems()一致的。在3.x里用items()替换iteritems(),可以用于for来循环遍历。
d={‘title‘:‘ppp‘,‘name‘:‘ccc‘}
print(d.items())

#6、keys()将字典中的键以列表形式返回
print(d.keys())

#7、pop方法用来获得对应于给定键的值,然后将这个键值对从字典中移除
d1={‘aasd‘:"sadad",‘asdasd‘:"sadsadad"}
print(d1.pop(‘aasd‘))
print(d1)

#8、popitem
#popitem方法类似于list.pop,后者弹出列表最后一个元素。但不同的是,popitem弹出随机的项,因为字典中没有最后的元素,该方法适合一个接一个旳移除并且处理项(不用首先获取键的列表,所以很高效)
d2={‘a‘:‘b‘,"c":‘d‘}
print(d2.popitem())
print(d2)

#9、setdefault
#setdefault在某种程度上类似于get,可以获得与给定键相关的值,setdefault还能在字典中不含给定键的情况下设定相应的键值,如果键值存在,不会修改原来的键值
d3={}
d3.setdefault(‘name‘,‘None‘)
print(d3)
d3[‘name‘]=‘CY‘
print(d3.setdefault(‘name‘,‘None‘))

#10、update
#update方法可以利用一个字典更新另一个字典,如果键值存在则直接覆盖,如果不存在则会添加
d={‘title‘:‘sasdadadad‘,"url":"asdasdadsad","change":‘asdasdada‘}
a={‘title‘:"a"}
d.update(a)
print(d)

#11、values,用于返回当前字典中的值
d={}
d[1]=1
d[2]=2
print(d.values())
#字典的格式化字符串
#在每个转换说明符的后面,可以加上键(用括号括起来),后面再加上说明元素
phonebook={‘Beth‘:‘9102‘,‘Alice‘:‘1111‘,‘tom‘:‘1551‘}
print("tom‘s phoneNum is %s" % phonebook["tom"])
print("tom‘s phoneNum is %(tom)s" % phonebook)

#除了增加的字符串键外,转换说明符还是像以前一样工作。,当以这种方式使用字典的时候,只要所有给出的键都能在字典中找到,就可以使用任意数量的转换说明符。
#这类字符串格式化在模板系统中非常有用
template="""<html>
<head><title>%(title)s</title></head>
<body>
<h1>%(title)s</h1>
<p>%(text)s</p>
</body>
"""

data={"title":"My Home Page","text":"Welcome to my home page!"}
print(template % data)

原文地址:https://www.cnblogs.com/hankleo/p/10894120.html

时间: 2024-11-13 02:33:56

Python中字典的详细用法的相关文章

python 中字典、数组

a = {"k1":"v1","A":1,"a":2,5:"i5"} a["A"] ="直接修改" a["aa"]="没有的键是新建" del a["a"] #删除一个元素 d.clear() #清空一个字典 1.字典是键值对,没有顺序, 2.键大小写敏感 3.键值可以是混合类型的 b = ["a&

Python中字典get方法的使用

Python中字典get方法的使用 说起来,这个功能是否需要学习还真是有待于讨论.其实,知道了字典这种数据结构以后,通过最基本的Python功能也能够实现一个类似的功能.不过,既然内置了这个功能那么我们就没有必要重复造车轮. 在字典内置的方法中,想说的方法为get.这个方法是通过键来获取相应的值,但是如果相应的键不存在则返回None.其实,None只是一个默认的返回值但是并不是一个不能修改的返回值.其实,如果查询失败,我们可以指定一个返回值. 上面提到的所有功能汇总在一个示范代码,具体如下: #

python中pop()函数的用法

python中pop()函数的用法 pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. 语法:list.pop(obj=list[-1]) //默认为 index=-1,删除最后一个列表值. obj -- 可选参数,要移除列表元素的对象. 该方法返回从列表中移除的元素对象. sentence=['All', 'good', 'things', 'come', 'to' ,'those', 'who', 'wait.'] print("默认为 index=-1,删除

Python中字典和集合的用法

本人开始学习python 希望能够慢慢的记录下去 写下来只是为了害怕自己忘记. python中的字典和其他语言一样 也是key-value的形式  利用空间换时间 可以进行快速的查找 key 是唯一的 不可变的类型 比如 str int 等  不能是list之类的可变类型 1.定义 定义一个字典 格式{key:value,key:value} a = {'a':80,'b':90,1:'a',2:[1,2]} print(a) 如果是定义如下 a = {'a':90,[1,2,3]:10} 则会

python中字典的使用

python中的字典的特性: 在字典中的元素是散列存放的,没有顺序, 在进行增删改查的时候使用字典中需要的关键字(key)即可. 一: 创建字典 1)直接定义一个: dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'} 注: 字典中可包含列表:dict={'yangrong':['23','IT'],"xiaohei":['22','dota']} 字典中可包含字典:dict={'yangrong':{"age&q

Python中字典和集合

映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元组等 包含可变对象的列表.字典和元组不能用作键 引用不存在的键会引发KeyError异常 1)字典 dict { } 空字典 { key1:value1,key2:value2,... } 字典在其它编程语言中又称作关联数组或散列表: 通过键实现元素存取:无序集合:可变类型容器,长度可变,异构,嵌套 支持的操作: len(D

python中字典,元组,集合

python中的字典,元组,集合 -dict -tuple -set dict 字典增删改查 字典创建 my_dict = {'a':1,'b':2} my_dict {'a': 1, 'b': 2} de8ug = {'name':'de8ug', 'city':'beijing', 'code':'python'} #个人信息 de8ug['name'] 'de8ug' de8ug['city'] 'beijing' de8ug.get('name') #尝试去获取name的值 'de8ug

python中字典dictionary详解及基本使用

1.dictionary是Python中除了list以外最灵活的数据类型 2.字典同样可以存储多个数据 3.通常用来存储描述某个物体的相关特征 4.和列表的区别 列表是有序的 字典是无须的 5.字典用{}来定义 6.字典用键值对存储数据,键值对之间用英文逗号分隔 键 key是索引 值 vaule是数据 键和值之间使用英文冒号:分隔 键必须是唯一的 值可以是任意数据类型,但是值只能是字符串.数字或元组 # 字典是一个无需的数据集合,print输出字典时通常输出的顺序和定义的顺序是不一致的 xiao

Python中的字符串及用法

字符串是 Python 中最常用的数据类型1.#字符串的定义a = 'westos'b = "what's"c = """用户管理管理系统1.添加用户2.删除用户3.显示用户..... """print(a)print(b)print(c) 2.字符串的特性 字符串是字符的有序集合,可以通过其位置来获得具体的元素.在 python 中,字符串中的字符是通过索引来提取的,索引从 0 开始.python 可以取负值,表示从末尾提取