注意:-2104520618,在当前程序是唯一的,退出后,重新hash,就不是这个数字了。
为什么字典,和hash有关系?
第二步:找规律,有多少数据,就找2的多少次方,如果有42亿数据,找32次就找出来了。
----增
----删
----改
----查
names = {
"stu1101":{"name":"Alex","age":22,"hobbie":"girl"},
"stu1102":"Jack",
"stu1103":"rain",
}
查:
(1)print(names["stu1101"]["hobbie"])-----------查
print(names["stu1104"]["hobbie"])-------------stu1104没有会报错-----------------------先判断在不在:
(2)print("stu1101" in names )----------------------True---在
print("stu1104" in names )----------------------False----不在
(3)print(names.get("stu1104"))----------没有返回一个 none
print(names.get("stu1101"))-------------有的话返回值
print(names.get("stu1104","asdfg"))------自定义一个值,返回asdfg
增:
names["stu1104"] = ["yangJian",31,"DBA"]
print(names)
改:
names["stu1104"][0] = "YANGJIAN"
print(names)
删:
(1)print(names.pop("stu1102"))
print(names)
(2)del names["stu1103"]
print(names)
————————————————————————————————————————————————
formkeys:
(1)
names = ["Jack","alex","eric"]
print (dict.fromkeys(names,0))
(2)
names = ["Jack","alex","eric"]
n3 = dict.fromkeys(names,1)
n3["Jack"]=2
print(n3)
{‘Jack‘: 2, ‘alex‘: 1, ‘eric‘: 1}
(3)
names = ["Jack","alex","eric"]
n3 = dict.fromkeys(names,[1,2,3])
n3["Jack"][1]=9
print(n3)
{‘Jack‘: [1, 9, 3], ‘alex‘: [1, 9, 3], ‘eric‘: [1, 9, 3]}-----为什么都变了?
看内存地址:
names = ["Jack","alex","eric"]
n3 = dict.fromkeys(names,[1,2,3])
#n3["Jack"][1]=9
print(id(n3["Jack"]),id(n3["eric"]))
5961568 5961568-----------------------------------------------内存地址一样
解释: a = 23 b =a a =40 b =23
a = [1,2,3]
b =a
现在把里面的2改成9,这时候a没有开辟新的内存空间
,只是把2变成9,内存空间不变化
————————————————————————————————————
items:一般来做循环
因为print(names.items())得到一个这样的列表: (‘stu1102‘, ‘Jack‘), (‘stu1103‘, ‘rain‘)
变成一个元组,有k,v
(1)for key in names:
print(key,names[key])--------效率高
(2)for k,v in names.items():-----效率低
print(k,v)
-------------------------------------------------------------
keys vlaus
print(names.keys())
print(names.values())
-----------------------------------------------------------
popitem------随机删除
names.popitem()
print(names)
----------------------------------------------------------
setdefault:
print(names.setdefault("stu1106","Racheal"))
print(names)
---------------------------------------------------------
update:合并2个字典
d1 ={"stu1102":"JACK",1:333,2:444}
names.update(d1)
print(names)
--------------------------------------------------------
字典的特性:无序,去重,查询效率高
--------------------------------------------------------
copy:
names = {
"stu1101":{"name":"Alex","age":22,"hobbie":"girl"},
"stu1102":"Jack",
"stu1103":"rain",
}
n2 = names.copy()
print(names)
print(n2)
-----------------------------------------------------------
names = {
"stu1101":{"name":"Alex","age":22,"hobbie":"girl"},
"stu1102":"Jack",
"stu1103":"rain",
}
n2 = names.copy()
names["stu1103"] = "RAIN"________________________________>>>
print(names)
print(n2)
{‘stu1101‘: {‘name‘: ‘Alex‘, ‘age‘: 22, ‘hobbie‘: ‘girl‘}, ‘stu1102‘: ‘Jack‘, ‘stu1103‘: ‘RAIN‘}
{‘stu1101‘: {‘name‘: ‘Alex‘, ‘age‘: 22, ‘hobbie‘: ‘girl‘}, ‘stu1102‘: ‘Jack‘, ‘stu1103‘: ‘rain‘}
-----------------------------------------------------------------------------------------------
names = {
"stu1101":{"name":"Alex","age":22,"hobbie":"girl"},
"stu1102":"Jack",
"stu1103":"rain",
}
n2 = names.copy()
names["stu1103"] = "RAIN"
names["stu1101"]["age"]= 24-------------------------------->>
print(names)
print(n2)
{‘stu1101‘: {‘name‘: ‘Alex‘, ‘age‘: 24, ‘hobbie‘: ‘girl‘}, ‘stu1102‘: ‘Jack‘, ‘stu1103‘: ‘RAIN‘}
{‘stu1101‘: {‘name‘: ‘Alex‘, ‘age‘: 24, ‘hobbie‘: ‘girl‘}, ‘stu1102‘: ‘Jack‘, ‘stu1103‘: ‘rain‘}
----------------------------------------------------------------------------------------
原文:http://www.cnblogs.com/gaojun2017/p/6336456.html