day9(Hash字典)

Posted mjiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day9(Hash字典)相关的知识,希望对你有一定的参考价值。

一、Hash

简介:

  Hash,一般被翻译成“散列”,也有直接音译"哈希"的,就是把任意长度的输入,通过哈希算法,变换成固定长度的输出,输出的结果就叫做哈希值,这是一种压缩映射,也就是说一般哈希值的空间要小于输入空间,不同的输入但是得出的哈希值可能是相同的,所以不可能从哈希值来确定输入值,简单来说哈希就是将任意长度压缩为固定长度的函数。

特征:

  Hash的值计算过程中是依据输入值的一些特性计算的,这就要求Hash值必须固定,因此被Hash的值必须是不可变的,如字符串、数字、元祖。不可为列表

用途:

  1. 文件签名
  2. MD5加密
  3. 密码验证

二、字典

简介:

  字典是一种key -value的数据类型,通过key的值来获取value

基本语法:

  

info = { #大括号
    a:1,#用冒号隔断key  value
    b:2,
    c:3
}
print(info)

 

特性:

  1. key -value 结构
  2. key必须可哈希、且必须为不可变数据类型、必须唯一
  3. 可存任意多个值、可修改、可不唯一
  4. 无序
  5. 查找速度快

基本操作:

增加

info = { #大括号
    a:1,#用冒号隔断key 和  value
    b:2,
    c:3
}
info[d] = [4,5] #可以增加列表
print(info)

# 结果 {‘a‘: 1, ‘b‘: 2, ‘c‘: 3, ‘d‘: [‘4‘, ‘5‘]}

删除

 

info = {
    a:1,
    b:2,
    c:3
}
info.pop("a")#删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
print(info)
#输出
{b: 2, c: 3}

#del删除
del info["a"]
print(info)
#输出
{b: 2, c: 3}

   info.popitem() #随机删除key的值
   print(info)

 #输出
 {‘b‘: 2, ‘c‘: 3}

 

info.clear() #清空字典
print(info)
#输出
{}

 

 

修改

info = { 
    a:1,
    b:2,
    c:3
}
info[a]  = 11
print(info)
#结果{‘a‘: 11, ‘b‘: 2, ‘c‘: 3}

查找,查找有两种方法分别是 

in

info = { 
    a:1,
    b:2,
    c:3
}
print("a" in  info)
#输出
True

info = { 
    a:1,
    b:2,
    c:3
}
print("x" in  info)
#输出
False

info = { 
    a:1,
    b:2,
    c:3
}
print (info[x]) #如果取得键字典里面没有就会报错
#报错

get

info = { 
    a:1,
    b:2,
    c:3
}
print (info.get(a))
#输出
1
info = { 
    a:1,
    b:2,
    c:3
}
print (info.get(a)) #如果取得键字典里面没有也不会报错则会返回 None
#输出
None

两种方法都可以满足查找的要求,但是建议使用get因为get查找的值如果不存在不会报错!

 

多级字典嵌套,字典里可以套字典,一层一层这个意思

info = {
    a:{
        A:1,
        B:2
    },
    b:2,
    c:3
}
print(info)
#输出
{a: {A: 1, B: 2}, b: 2, c: 3}

values #以列表返回一个字典所有的值

{a: 1, b: 2, c: 3}
>>> info.values()
dict_values([1, 2, 3])

keys#以列表返回一个字典所有的键

>>> info.keys()
dict_keys([a, b, c])

setdefault #和get 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

>>> info.setdefault(xiaoze,baliya)
maliya
>>> info 
{a: 1, b: 2, c: 3, xiaoze: maliya}

 update#把字典dict2的键/值对更新到dict里。

>>> info 
{a: 1, b: 2, c: 3, xiaoze: baliya}
>>> info_2
{A: 1, b: 2, c: [4, 5, 6]}
>>> info.update(info_2)
>>> info 
{a: 1, b: 2, c: [4, 5, 6], xiaoze: baliya, A: 1}

items#以列表返回可遍历的(键, 值) 元组数组。

>>> info.items()
dict_items([(a, 1), (b, 2), (c, [4, 5, 6]), (xiaoze, baliya), (A, 1)])

fromkeys#用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值

 

>>> dict.fromkeys([1,2,3],test)
{1: test, 2: test, 3: test}

循环

#方法一

info = {
    a:1,
    b:2,
    c:3
}
for key in info:
    print(key,info[key])
#输出
a 1
b 2
c 3

#方法二

for key,y in  info.items():
    print(key,y)
#输出
a 1
b 2
c 3

#使用第一种方法不是建议,第二种方法刚刚说过了是将字典转换为列表然后在循环打印,这样大大降低了效率!

以上是关于day9(Hash字典)的主要内容,如果未能解决你的问题,请参考以下文章

day9.集合

day9(字典练习题)

20230420-Python-集合与字典-day9

DAY9-字符串笔记整理2018-1-19

如何从URL获取片段标识符(hash#之后的值)?

13 个非常有用的 Python 代码片段