标准格式: dict = {key1:val1,key2:val2,key3:val3}
- 字典中的元素必须以项(键值对)的形式出现 (键key : 值value)
- 逻辑上讲,键不能重复,但值可以
- 键不可变,不可修改;值可变,可以是任何元素
- 字典指定值并没有特殊顺序
可以使用dict函数将其他映射(如其他字典)或键值对建立字典
student = [('name','小智'),('number','1001')]
detail = dict(student)
print(detail)
>>>{'name': '小智', 'number': '1001'}
print('学生姓名:',detail['name'])
>>>学生姓名: 小智
或通过dict关键字创建字典
detail = dict(name = '小智',number = '1001')
print(detail)
>>>{'name': '小智', 'number': '1001'}
letter = {'a':1,'b':2,'c':3,'d':4}
letter['a'] = 6
print(letter)
>>>{'a': 6, 'b': 2, 'c': 3, 'd': 4}
>letter['e'] = 5
print(letter)
>>>{'a': 6, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
通过一个类似给键(key)赋值的方式修改字典
当key存在于字典内时:修改对应值;当key不在字典内时,添加新的键并赋值
letter = {'a':1,'b':2,'c':3,'d':4}
del letter['c']
print(letter)
>>>{'a': 1, 'b': 2, 'd': 4}
如果在字典后不添加[key],则直接删除整个字典
字典的格式化方式是在每个转换说明符(%)后加上圆括号()括起来的键,再跟上其他元素说明;
用这种方式使用字典时,只要给出的键都能在字典中找到,就可以获得任意数量的转换说明符
letter = {'a':1,'b':2,'c':3,'d':4}
print('the letter a is %(a)s , c is &(c)s here' % letter)
>>>the letter a is 1 , c is 3 here
dict可以用在很多需要高速查找的地方,需要牢记:键必须是不可变对象
dict的特点:
list的特点:
dict.clear()
用于删除字典内的所有项
letter = {'a':1,'b':2,'c':3,'d':4}
print(letter.clear())
>>>None
dict.copy()
用于返回一个具有相同键值对的新字典,此方法是浅复制(shallow copy),因为值本身是相同的,而不是副本;
dict.fromkeys(seq[,value])
用于创建一个新字典,dict代表指定字典;seq代表字典键列表;value(可选参数)代表键对应的值;
此方法中dict为必写项
a = '1234'
print(dict.fromkeys(a,0)) # 生成一个以变量a的值为键集合的字典,并赋值‘0’
>>>{'1': 0, '2': 0, '3': 0, '4': 0}
a = ['1','2','3','4']
print(dict.fromkeys(a,0))
>>>{'1': 0, '2': 0, '3': 0, '4': 0}
a = [1,2,3,4]
print(dict.fromkeys(a,0))
>>>{1: 0, 2: 0, 3: 0, 4: 0}
a = [1234]
print(dict.fromkeys(a,0))
>>>{1234: 0}
a = {1:0,2:0,3:0,4:0}
print(a.get(1)) # 寻找键1 对应的值,返回值为默认
>>>0
print(a.get(5)) # 寻找键5 对应的值,返回值为默认
>>>None
print(a.get(5,9)) # 寻找键5 对应的值,并设定返回的默认值为 9
>>>9
print(a) # get()不会改变原字典
>>>{1: 0, 2: 0, 3: 0, 4: 0}
print(a.setdefault(1)) # 寻找键1 对应的值,如果键在字典内,返回对应的值;若键不在字典内,创建键 1,赋值None
>>>0
print(a.setdefault(5)) # 寻找键5 对应的值,如果键在字典内,返回对应的值;若键不在字典内,创建键 5,赋值None
>>>None
print(a) # setdefault()改变原字典,添加了新的项 5:None
>>>{1: 0, 2: 0, 3: 0, 4: 0, 5: None}
print(a.setdefault(5,9)) # 寻找键5 对应的值,如果键在字典内,返回对应的值;若键不在字典内,创建键 5,赋值9
>>>None # 因为之前已经添加了新的项 5:None,所以键5可以被找到,值为None
print(a) #
>>>{1: 0, 2: 0, 3: 0, 4: 0, 5: None}
dict.update(dict2)
用于把字典dict2的项更新添加到dict里( 类似于列表方法中的 list.extend(esq) )
a = {1:0,2:0,3:0,4:0}
b = {'1':'u','2':'i'}
a.update(b)
print(a)
>>>{1: 0, 2: 0, 3: 0, 4: 0, '1': 'u', '2': 'i'}
a = {1:0,2:0,3:0,4:0}
b = {'1':'u','2':'i'}
a.update(b)
print(a.keys())
>>>dict_keys([1, 2, 3, 4, '1', '2'])
print(a.values())
>>>dict_values([0, 0, 0, 0, 'u', 'i'])
print(a.items())
>>>dict_items([(1, 0), (2, 0), (3, 0), (4, 0), ('1', 'u'), ('2', 'i')])