Python基础---Dict(字典)

本文介绍了Python字典的基础知识,包括字典的创建、访问、更新和删除操作。讲解了字典的键必须是hashable且唯一,值可任意。讨论了字典的常用方法如len(), get(), pop(), update()等,并对比了setdefault()与直接赋值的区别。还提到了字典的keys()和items()支持集合运算的特点。" 39830257,4847703,大一新生的计算机科学之旅:从零开始,"['计算机科学', '编程入门', '学习策略', '大学教育', '编程实践']
摘要由CSDN通过智能技术生成

1.字典以键值对组成,包含在{}中,字典的键必须为hashable,即不可变(字符串、元组、数字),并且唯一;值可以是任何类型

# dict1 = {[1]: 1}  # 报错:TypeError: unhashable type: 'list'

# dict1 = {
   {1}: 1}  # 报错:TypeError: unhashable type: 'set'

dict1 = {(1,): 1}
print(dict1)  # {(1,): 1}

dict1 = {"12": 122}
print(dict1)  # {'12': 122}

dict1 = {1: 12}
print(dict1)  # {1: 12}

2.字典的创建有多种,以下几种都等同

dict1 = dict(one=1, two=2)
print(dict1)  # {'one': 1, 'two': 2}

dict2={"one":1,"two":2}
print(dict2)  # {'one': 1, 'two': 2}

dict3=dict(zip(["one","two"],[1,2]))
print(dict3)  # {'one': 1, 'two': 2}

dict4=dict( (("one",1),("two",2)) )
print(dict4)  # {'one': 1, 'two': 2}

dict5=dict( [("one",1),("two",2)] )
print(dict4)  # {'one': 1, 'two': 2}

dict6=dict({"one":1,"two":2})
print(dict6)  # {'one': 1, 'two': 2}

print(dict1==dict2==dict3==dict4==dict5==dict6)  # True

3.键用数字的时候,像1和1.0、1.00都是相同的,可以用来索引同一个字典条目,如果相同的键出现多次,则以最后的值为准

dict1 = {1: 12}
print(dict1)  # {1: 12}

dict1 = {1: 12, 1.0: 33}
print(dict1)  # {1: 33}

dict1 = {1: 12, 1.0: 33,1.00:666}
print(dict1)  # {1: 666}

4.len(dict):表示字典中元素的个数

dict1 = {"a": 1, "aa": 11}
print(len(dict1))  # 2

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(len(dict1))  # 4

5.dict[key]:返回 dict 中以 key 为键的值, 如果key不存在 , 则会引发 KeyError

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(dict1["aa"])  # 11
# print(dict1["c"])  # 报错:KeyError: 'c'

6.dict[key]=value:将 dict[key] 设为 value,若 dict[key]原来存在,则更新原来的value值,否则类似于新加了key-value

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
dict1["a"]=2
dict1["c"]=3
print(dict1)  # {'a': 2, 'aa': 11, 'b': 2, 'bb': 22, 'c': 3}

7.key in dict:如果字典dict中存在键 key 则返回 True,否则返回 False

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22,"a ":1000}
print(dict1)  # {'a': 1, 'aa': 11, 'b': 2, 'bb': 22, 'a ': 1000}
print("a" in dict1)  # True
print("a " in dict1)  # True
print(" a" in dict1)  # False

8.key not in dict:如果字典dict中不存在键 key 则返回 True,否则返回 False,等同于not key in dict

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22,"a ":1000}
print(dict1)  # {'a': 1, 'aa': 11, 'b': 2, 'bb': 22, 'a ': 1000}
print("a" not in dict1)  # False
print("a " not in dict1)  # False
print(" a" not in dict1)  # True

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22,"a ":1000}
print(dict1)  # {'a': 1, 'aa': 11, 'b': 2, 'bb': 22, 'a ': 1000}
print(not "a" in dict1)  # False
print(not "a "  in dict1)  # False
print(not " a"  in dict1)  # True

9.iter(dict):返回以字典的键为元素的迭代器,是 iter(dict.keys()) 的简写

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(dict1.keys())  # dict_keys(['a', 'aa', 'b', 'bb'])
print(iter(dict1.keys()))  # <dict_keyiterator object at 0x000002B3109DAA98>
print(list(iter(dict1.keys())))  # ['a', 'aa', 'b', 'bb']

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(iter(dict1))  # <dict_keyiterator object at 0x000001217051AA98>
d=iter(dict1)
print(tuple(d))  # ('a', 'aa', 'b', 'bb')

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(iter(dict1))  # <dict_keyiterator object at 0x000001217051AA98>
d=iter(dict1)
print(list(d))  # ['a', 'aa', 'b', 'bb']

10.dict.clear():删除字典的所有元素,无返回值

dict1 = {"a": 1, "aa": 11,"b":2,"bb":22}
print(dict1.clear())  # None
print(dict1)  # {}
dict1.clear()
print(dict1)  # {}

11.dict.copy():返回字典的浅拷贝

dict1 = {"a": 1,"bb":22,"ccc":[1,2,3],"dd":(4,5,6),"fu":[101,[102,103]]}
dict2=dict1.copy()
print(dict1)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
print(dict2)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
dict1["a"]=999
print(dict1)  # {'a': 999, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
print(dict2)  # {'a': 1, 'bb': 22, 'ccc': [1, 2, 3], 'dd': (4, 5, 6), 'fu': [101, [102, 103]]}
dict1["ccc"][0]=99
print(dict1["ccc"])  # [99, 2, 3]
print(dict2["ccc"])  # [99, 2, 3]
dict1["ccc"]=[8,9]
print(dict1["ccc"])  # [8, 9]
print(dict2["ccc"])  # [99, 2, 3]
dict1["ccc"]=888
print(dict1["ccc"])  # 888
print(dict2["ccc"])  # [99, 2, 3]

dict2["fu"][0]=119
print(dict1["fu"])  # [119, [102, 103]]
print(dict2["fu"])  # [119, [102, 103]]

dict2["fu"][1][0]=77
print(dict1["fu"])  # [119, [77, 103]]
print(dict2["fu"])  # [119, [77, 103]]

dict2["fu"][1]=[104,105,106]
print(dict1["fu"])  # [119, [104, 105, 106]]
print(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值