Python字典

Python学习之路,点击有全套Python笔记

字典(dict)是一系列键——值对。每个键都与一个值相关联,这个值可以是Python中的任何对象。
可以通过“键对象”实现快速获取,删除,更新对应的键值对象。
“键”-"值"就像身份证号码与你,你的名字可以有很多人和你一样,你也可以随便改名,但是,你的身份证号码不能变,不然没法找到你这个人。因此,字典中的"键"值不能变,所以不能是列表,字典,集合等可变对象;值可以改变,所以可以是Python中任意对象。

1. 创建字典

  • 基础版
a = {'color': 'blue', 'size': 20, 'font': 'Simsun'}
print(a)  # {'color': 'blue', 'size': 20, 'font': 'Simsun'}
  • 基础版2.0
a = dict(name='tom', age=18, job='doctor')
print(a)  # {'name': 'tom', 'age': 18, 'job': 'doctor'}
  • 基础版3.0
a = dict([("langue", ["Python", "C++"]), ("name", "tom")])
print(a)  # c = dict([("name", "tom"), ("age", 18)])
  • 基础版4.0
k = ["a", "b", "c"]
v = [100, 200, 300]
f = dict(zip(k, v))
print(f)  # {'a': 100, 'b': 200, 'c': 300}

-进阶版

a = dict.fromkeys(['name', 'age', 'job'])
a['name'] = 'tom'
print(a)  # {'name': 'tom', 'age': None, 'job': None}
  • 进阶版2.0(推导式)

{key_expression : value_expression for 表达式 in 可迭代对象}

my_text = 'i love you, i love python, i love china'
char_count = {c: my_text.count(c) for c in my_text}
print(char_count)
# {'i': 4, ' ': 8, 'l': 3, 'o': 5, 'v': 3, 'e': 3, 'y': 2, 'u': 1, ',': 2, 'p': 1, 't': 1, 'h': 2, 'n': 2, 'c': 1, 'a': 1}

2. 增加

# 如果键存在,就覆盖,不存在就新增
a = dict.fromkeys(['name', 'age', 'job'])
a['name'] = 'tom'
a['money'] = 'rich'
print(a)  # {'name': 'tom', 'age': None, 'job': None, 'money': 'rich'}
a['name'] = 'jack'
print(a)  # {'name': 'jack', 'age': None, 'job': None, 'money': 'rich'}

3. 删除

字典中元素的删除使用del()方法;或者clear()删除所有键值对;pop()删除指定键值对,并返回对应的’值对象’;popitem()是随机删除并返回该键值对(一般为最后加入的键值对)

# del
a = dict(name='tom', age=18, job='doctor')
del(a['name'])
print(a)  # {'age': 18, 'job': 'doctor'}

# clear
a = dict(name='tom', age=18, job='doctor')
a.clear()
print(a)  # {}

# pop
a = dict(name='tom', age=18, job='doctor')
b = a.pop('name')
print(a)  # {'age': 18, 'job': 'doctor'}
print(b)  # tom

# popitem
a = dict(name='tom', age=18, job='doctor')
print(a.popitem())  # ('job', 'doctor')
print(a)  # {'name': 'tom', 'age': 18}

3. 修改

使用update()将新字典中所有键值对全部添加到旧字典对象上。如果键有重复,直接覆盖

a = dict(name='tom', age=18, job='doctor')
b = dict(name='jack', money='rich', speed='slow')
a.update(b)
print(a)  # {'name': 'jack', 'age': 18, 'job': 'doctor', 'money': 'rich', 'speed': 'slow'}

4. 字典元素的访问

1、通过[键]获得“值”。若键不存在,则抛出异常

a = dict(name='tom', age=18, job='doctor')
print(a['name'])  # tom

2、通过get()获取值,优点:指定键不存在时,返回none

a = dict(name='tom', age=18, job='doctor')
print(a.get('age'))  # 18

3、items()列出所有的键值对

a = dict(name='tom', age=18, job='doctor')
print(a.items())  # dict_items([('name', 'tom'), ('age', 18), ('job', 'doctor')])

3、keys()列出所有的键,values()列出所有的值

a = dict(name='tom', age=18, job='doctor')
print(a.keys())  # dict_keys(['name', 'age', 'job'])
print(a.values())  # dict_values(['tom', 18, 'doctor'])

5. 遍历字典

  • 遍历键值对
user = {
    'username': 'python',
    'password': 'hello',
    'age': '18'
}
for keys, values in user.items():
    print("keys:" + keys)
    print("valeus:" + values + '\n')
'''
keys:username
valeus:python

keys:password
valeus:hello

keys:age
valeus:18
'''
  • 遍历键
user = {
    'username': 'python',
    'password': 'hello',
    'age': '18'
}
for key in user.keys():
    print('key:' + key)
'''
key:username
key:password
key:age
'''

6. 嵌套

  • 字典列表
aliens =[]
for alien_number in range(30):
    new_alien = {'color': 'red', 'points': 5, 'speed': 'slow'}
    aliens.append(new_alien)
for alien in aliens[:5]:
    print(alien)
print(len(aliens))  # 30
  • 字典内嵌套字典
users = {
    'jack': {
        'age': 18,
        'job': 'doctor',
        'money': 'rich'
    },
    'tom': {
        'age': 18,
        'job': 'teacher',
        'money': 'rich'
    }
}
for user_name, user_info in users.items():
    print('username:' + user_name)
    print('userjob:' + user_info['job'])
    print('usermoney:' + user_info['money'])
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值