python学习--基本数据类型之字典

python中数据类型

第一类:不可变类型、静态数据类型、不支持增删改操作

  • 数字(number)
  • 字符串(string)
  • 元组(tuple)

第二类:可变类型、动态数据类型、支持增删改操作

  • 列表(list)
  • 字典(dictionary)
  • 集合(set)

python学习–基本数据类型之字典

1、创建、使用

"""
字典的解释:
字典是以键值对的形式存储数据  (相当于c++中的set)
语法:
{key:value,key1:value...}
通过索引key寻找对应的value值

key & val 的要求
key : 必须是可hash的数据类型
val: 可以是任何数据类型 --  str list

字典中key认为只有一个数据,并且元素不可以重复
"""
# 举例 -- 定义一个字典
dic = {"jay":"周杰伦", "金毛失望": "谢逊"}
val = dic["金毛失望"]
print(val) # 谢逊

# 举例说明字典的key和val的对应的数据类型
d = {123 : "呵呵", True : "哈哈", "name" : "me", (1, 2, 3) : 123, "老赵" : ["李大妈", "刘大婶"]}
print(d)
# 通过key寻找到对应的val --  帮助老赵 找对象
val = d["老赵"]
print(val)

2、字典的增删改查

"""
字典的增删改查
1、增
    新建空字典 向空字典中添加元素(通过键值对的方式)
    在已存在的字典中增加新的元素   通过键值对的形式增加
    使用默认值增加 -- setdefault
2、删除
    删除单个元素
        使用内置方法pop
    删除所有元素
        使用内置方法clear

3、修改
    包含上面方法
4、查询
    查询的方式1: 直接通过key寻找对应val
        dic[”key“]
    查询的方式2: 使用get方法,直接通过key寻找对应val
        dic.get(”key“)
    方法区分:
        相同点:
            都可以查询功能
        不同点:
        1中当查询不存在的key的时候,直接报错
        2中当查询不存在的key的时候,不会报错,返回None
"""
dic1 = dict()
dic1["key1"] = "小猫"
dic1["key2"] = "小狗"
print(dic1) # {'key1': '小猫', 'key2': '小狗'}

"""
setdefault: 设置默认值,设置的时候默认key是不存在的,若key本身存在,则使用setdefault设置失效
"""
dic1.setdefault("小猫", "祝小咪")  # key必须是不存在的
print(dic1)


# # 修改
# d['jj'] = "刘能"  # dict[老key] = 值  修改
# print(d)

# # 删除
dic2 = {
    "齐天大圣" : "孙悟空",
    "天蓬元帅" : "猪八戒",
    "卷帘将军" : "沙悟净",
    "金蝉子" : "唐三藏"
}
print(dic2)
val2 = dic2.pop("齐天大圣")
print(dic2)
val3 = dic2.clear()
print(dic2)

# 查询
dic3 = {
    "花和尚" : "鲁智深",
    "及时雨" : "宋江",
    "黑旋风" : "李逵"
}
# 循环查询
for i in range(len(dic3)):
    name = input("请输入一个名字:")
    val = dic3.get(name)
    if val is None:
        print("查无此人")
    else:
        print(val)

print("恭喜你,找到啦!")


"""
小练习:列表和字典的
将一个列表的元素分开,把大于50的放一起, 把小于50的放一起

"""
lst = [11, 22, 33, 44, 55, 66, 77, 88, 99]
# 创建一个字典
dic = dict()
for item in lst:
    if item < 50:
        # 如果key不存在就创建一个
        if dic.get("key1") is None:
            dic["key1"] = [item]
        else:
            # 本身存在直接添加即可
            dic["key1"].append(item)
    else:
        if dic.get("key2") is None:
            dic["key2"] = [item]
        else:
            # 本身存在直接添加即可
            dic["key2"].append(item)

print(dic)

 解法二:简化的方法
# lst = [11, 22, 33, 44, 55, 66, 77, 88, 99]
result = {}  # 结果
for item in lst:
    if item > 50:
        result.setdefault("bigger", []).append(item)
    else:
        result.setdefault("smaller", []).append(item)
print(result)

3、字典的循环


"""
字典中的循环和嵌套
循环:
    字典中通过循环可以获取存储中key\val值
"""

dic = {
    "花和尚" : "鲁智深",
    "及时雨" : "宋江",
    "黑旋风" : "李逵"
}

# 方法1: 直接通过key拿到对应的key\value
for key in dic :
    print(key, dic[key])

# 方法2:通过key() 函数可以拿到所有的key
lst = dic.keys() # 保存在一个list中
print(lst)
for i in lst:
    print(i,dic[i])

# 方法3:通过value() 拿到所有的value
lst1 = dic.values()
for i2 in lst1:
    print(i2)

# 方法4:字典中可以通过items()拿到所有数据,直接拿到key value中的数据
for key, value in dic.items() :
    print(key, dic[key])

"""
知识点补充
解构
元组和列表中可以使用 将元素拆开分别输出

"""
a = 10, 20
print(type(a))  # <class 'tuple'>
b = [10, 20]
print(type(b))  # <class 'list'>
c = dict()
print(type(c))  # <class 'dict'>
d, f = 22, 33
print(d, f)

4、嵌套

"""
字典的嵌套:字典中嵌套字典,访问字典中任意元素的数值,结合字典的常用的方法,灵活使用
"""
dic = {
    "name":"吴承恩",
    "西游记":{
        "齐天大圣" : "孙悟空",
        "天蓬元帅" : "猪八戒",
        "卷帘将军" : "沙悟净",
        "金蝉子" : "唐三藏"
    }
}
print(dic)

你可能感兴趣的:(python,python,学习,java)