字典 dict
字典是python中唯一的映射类型,python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
增
dic['li'] = ["a","b","c"]print(dic) setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。 # dic.setdefault('k','v') # print(dic) # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} # dic.setdefault('k','v1') # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'} # print(dic)
改
dic['name'] = 'jinxin' print(dic)
update 将dic1 里面的键值对覆盖并添加到dic里面 dic.update(dic1) print(dic) print(dic1)
删
dic_pop = dic.pop("a",'无key默认返回值') # pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值v del dic["name"] # 没有返回值。print(dic) dic_pop1 = dic.popitem() # 随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回print(dic_pop1) # ('name','jin') dic_clear = dic.clear() # 清空字典print(dic,dic_clear) # {} Non
查
value1 = dic["name"] # 没有会报错
value2 = dic.get("djffdsafg","默认返回值") # 没有可以返回设定的返回值
# dic = {"name":"jin","age":18,"sex":"male"} # for key in dic: # print(key) # for item in dic.items(): # print(item) # for key,value in dic.items(): # print(key,value)
其他操作。
# item = dic.items() # print(item,type(item)) # dict_items([('name', 'jin'), ('sex', 'male'), ('age', 18)]) <class 'dict_items'> # 这个类型就是dict_items类型,可迭代的 # keys = dic.keys() # print(keys,type(keys)) # dict_keys(['sex', 'age', 'name']) <class 'dict_keys'> # values = dic.values() # print(values,type(values)) # dict_values(['male', 18, 'jin']) <class 'dict_values'> 同上
字典的循环
# dic = {"name":"jin","age":18,"sex":"male"} # for key in dic: # print(key) # name age sex # for item in dic.items(): # print(item) #('name', 'jin')('age', 18)('sex', 'male')
# for key,value in dic.items(): # print(key,value) #name jinage 18 sex male
for i in dic.values():
print(i) #jin 18 male
三,其他(for,enumerate,range)。
for循环:用户按照顺序循环可迭代对象的内容。
msg = '老男孩python是全国范围内最好的python培训机构' for item in msg: print(item) li = ['alex','银角','女神','egon','太白'] for i in li: print(i) dic = {'name':'太白','age':18,'sex':'man'} for k,v in dic.items(): print(k,v)
enumerate:枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
li = ['alex','银角','女神','egon','太白'] for i in enumerate(li): print(i) #(0,“alex”)(1,“银角”)... for index,name in enumerate(li,1): print(index,name) #1 alex 2 银角 ... for index, name in enumerate(li, 100): # 起始位置默认是0,可更改 print(index, name)
range:指定范围,生成指定数字。
for i in range(1,10): #左包右不包 print(i) for i in range(1,10,2): # 步长 print(i) for i in range(10,1,-2): # 反向步长 print(i)