首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python自学成才之路 字典详细用法

python自学成才之路 字典详细用法

作者头像
我是李超人
发布2020-08-20 15:22:00
4830
发布2020-08-20 15:22:00
举报

文章目录
  • 字典介绍
  • 遍历字典
    • 1.遍历字典的键
    • 2.遍历字典上的值
    • 3.遍历键和值
  • 字典嵌套
    • 1.字典列表
    • 2.字典中嵌套列表和字典

字典介绍

字典使用{}表示,内部是一个个键值对,类似于java中的map,但是java中的map有泛型做约束,而python字典则没有。字典的键必须是可hash的,像字符串和整形是可hash,但是如果使用列表或者字典作为键则会报键不能hash异常,如下所示

listtest = ['ds','ds']
userInfo[listtest] = 'sds'

Traceback (most recent call last):
  File "D:/pythonbase/dict/dicBase.py", line 19, in <module>
    userInfo[listtest] = 'sds'
TypeError: unhashable type: 'list'

字典的键没有强制要求类型必须一致,这在java中是不允许的,但是python中键类型可以不一致,如果在字典中使用不同类型的键,代码不会报错,但是一遍不会这样做,而且不同类型的键在后续操作中容易出问题,所以最好不要使用不同类型的键。

# 不建议使用不同类型的键
userinfo = {}
userinfo[1] = 'hello'
userinfo['2'] = 'world'
print(userinfo)
输出:
{1: 'hello', '2': 'world'}

在字典中使用不同类型的值比较常见,比如定义一个userInfo的字典用来表示用户信息,其中键全是字符串类型,值有字符串类型,也有整形,还有字典类型和列表类型。

userInfo = {}
userInfo['name'] = 'Peter'
userInfo['id'] = 1121021
userInfo['detail'] = {'addr':'new york','age':12,'tel':'21232221021'}
userInfo['friend'] = ['Jane','Bob','Kate']
print(userInfo)
输出:
{'name': 'Peter', 'id': 1121021, 'detail': {'addr': 'new york', 'age': 12, 'tel': '21232221021'}, 'friend': ['Jane', 'Bob', 'Kate']}

在定义一个字典时,可以在定义的时候做初始化,上面的userInfo也可以像下面这样定义:

userInfo = {'name': 'Peter', 'id': 1121021, 'detail': {'addr': 'new york', 'age': 12, 'tel': '21232221021'},
            'friend': ['Jane', 'Bob', 'Kate']}

遍历字典

1.遍历字典的键

通过for循环遍历字典时,默认是遍历所有的键

userInfo = {'100':'peter','101':'bob','103':'david','104':'jane','105':'kate','106':'jack'}
for key in userInfo:
    print(key)

也可以使用keys()方法遍历所有的键

for key in userInfo.keys():
    print(key)

在遍历键时还可以对键做排序操作,但是前提是键的类型都是一致的,否则会报错

for key in sorted(userInfo.keys()):
    print(key)

2.遍历字典上的值

通过values()方法来遍历所有的值

for value in userInfo.values():
    print(value)

在遍历值得时候也可以对值做排序操作,但是值得类型必须一致,否则会报错

for value in sorted(userInfo.values()):
    print(value)

直接遍历值的时候可能会出现很多重复的值,可以使用set来对值做去重处理,前提是值的类型是一致的。

for value in set(userInfo.values()):
    print(value)

3.遍历键和值

使用items()方法可以同时遍历键和值

for k,v in userInfo.items():
    print('key = ' + k + ', value = ' + v)

字典嵌套

1.字典列表

列表的元素是字典

userInfos = []
userInfos.append({'name':'Peter','age':12})
userInfos.append({'name':'Jack','age':15})
userInfos.append({'name':'Jane','age':14})
userInfos.append({'name':'Mike','age':13})
print(userInfos)

2.字典中嵌套列表和字典

在字典中同时嵌套字典和列表,比如下面用字典来表示用户信息,第一层是字典,字典里面的兴趣爱好又是列表。

userInfo = {
    'peter':{
        'id':'1234',
        'age':12,
        'tel':'172313133',
        'like':['play guitar','sing','swim']
    },
    'bob':{
        'id':'1235',
        'age':14,
        'tel':'17232333',
        'like':['play basketball','sing','dance']
    }
}
print(userInfo)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 字典介绍
  • 遍历字典
    • 1.遍历字典的键
      • 2.遍历字典上的值
        • 3.遍历键和值
        • 字典嵌套
          • 1.字典列表
            • 2.字典中嵌套列表和字典
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档