字典(dictionary)
字典在某些语言中可能被称为联合内存(associative memories)或联合数组(associative arrays)。序列是以连续的整数为索引,与此不同的是,字典以“关键字”为索引,关键字可以使任意不可变类型,通常用字符串或数值。如果元组中只包含字符串和数字,它可以作为关键字,如果它直接或间接地包含了可变对象,就不能当做关键字。不能用列表做关键字,因为列表可以用索引、切割或者append()和extend()等方法改变。
字典是无序的键:值对(key:value对)集合,键必须是互不相同的(在同一个字典之内)。使用大括号创建一个空的字典:{}.初始化列表时,在大括号内放置一组逗号分隔的键:值对,这也是字典输出的方式。
字典的主要操作时依据键来存储和取值。也可以用del来删除键:值对(key:value),从一个不存在的键中取值会导致错误
# 房价的一个例子
house_price = {"beijing":60980,"shenzhen":43390,"haikou":24000}
house_price["chengdu"] = 12000
print("存储房价信息的字典:",house_price)
print("海口的房价为:",house_price["haikou"])
存储房价信息的字典: {'beijing': 60980, 'shenzhen': 43390, 'haikou': 24000, 'chengdu': 12000}
海口的房价为: 24000
del house_price["haikou"]
house_price["shanghai"] = 50000
print(house_price)
print(house_price.keys())
print("chengdu" in house_price)
print("heifei" in house_price)
{'beijing': 60980, 'shenzhen': 43390, 'chengdu': 12000, 'shanghai': 50000}
dict_keys(['beijing', 'shenzhen', 'chengdu', 'shanghai'])
True
False
常见字典操作方法
D.clear() 删除字典内所有元素
D.copy() 返回一个字典的复制
D.fromkeys(seq,val) 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
D.get(key,default=None) 返回指定键的值,如果值不在字典中返回default的值
D.has_key(key) 如果键在字典dict里返回true,否则返回false
D.items() 以列表返回可遍历的(键,值)元组数组
D.keys() 以列表返回一个字典所有的键
D.setdefault(key,default=None)和get()类似,但如果键不存在与字典中,将会添加键并将值设为default
D.update(dict2) 把字典dict2的键/值对更新到dict里
D.values() 以列表返回字典中的所有值
D.pop(key) 删除一个键并返回它的值,类似于列表的pop,只不过删除的是一个键不是一个可选的位置
del D[key] 删除键
D[key] = 42新增或修改键
字典用法注意事项:
1.序列运算无效,字典元素间是没有顺序的概念
2.对新索引赋值会添加项
3.键不一定总是字符串
# 返回指定键的值,如果值不在字典中,返回default的值
print("北京房价",house_price.get("beijing",0))
print("重庆房价",house_price.get("chongqing",0))
北京房价 60980
重庆房价 0
多种构造字典方式
dict()构造函数可以直接从key-value对中创建字典
# 另外一种构造字典的方式
dict([("beijing",60980),("shenzhen",49390),("haikou",24000)])
{'beijing': 60980, 'shenzhen': 49390, 'haikou': 24000}
#创建一个新字典,以序列seq中元素做字典的键,val为字典所有对应的初始值
dict.fromkeys(["a","b"],0)
{'a': 0, 'b': 0}
dict(zip(["beijing","shenzhen","haikou"],[60980,49390,24000]))
{'beijing': 60980, 'shenzhen': 49390, 'haikou': 24000}
{k:v for (k,v) in zip(["beijing","shenzhen","haikou"],[60980,49390,24000])}
{'beijing': 60980, 'shenzhen': 49390, 'haikou': 24000}
# 通过字典推导式构造字典
{x:x**2 for x in (2,4,6)}
{2: 4, 4: 16, 6: 36}
#模式是集合
{c:c*4 for c in "python"}
{'p': 'pppp', 'y': 'yyyy', 't': 'tttt', 'h': 'hhhh', 'o': 'oooo', 'n': 'nnnn'}
dict(a=1,b=2,c=3)
{'a': 1, 'b': 2, 'c': 3}
{c.lower():c*4+"!" for c in "python"}
{'p': 'pppp!',
'y': 'yyyy!',
't': 'tttt!',
'h': 'hhhh!',
'o': 'oooo!',
'n': 'nnnn!'}

本文详细介绍了字典的基本概念、特点及多种构造方法,包括关键字的选择、字典的增删改查操作,以及常见字典方法如get、update等的使用。并通过房价实例展示了字典的动态操作。
12万+

被折叠的 条评论
为什么被折叠?



