前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python - 多键值字典

Python - 多键值字典

作者头像
为为为什么
发布2022-08-04 15:39:32
1.3K0
发布2022-08-04 15:39:32
举报
文章被收录于专栏:又见苍岚

Python 字典是基本的数据结构之一,有时需要用到多个键值维护一组数据,事实上python的 dict 已经支持类似功能,本文记录实现方法。

python 字典简介

  • 字典是另一种可变容器模型,且可存储任意类型对象。
  • 字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
代码语言:javascript
复制
d = {key1 : value1, key2 : value2 }

[1]

  • python 中字典的 key 要求可哈希,而且必须不可变,可以用数字、字符串、元组作为键值(列表不可以)
多键值需求描述
  • 我们需要查找某个数据需要多组key,好像多维空间中的坐标轴,维度数量可能可变可能不变
  • 对于多键值的实现有两种思路:
    • 单 key 多键值
    • 多 key
  • 用例:

单 key 多键值

  • 字典中的 key 是唯一的,但是元组可以作为 key,因此把多组关键词用元组包裹起来可以作为唯一的 key 使用
  • 形式如下:
代码语言:javascript
复制
dict ={(ke11,key12): value, (key21,key22):value ...}

使用时形式:

代码语言:javascript
复制
dict[key11,key12]
# 或
dict[(key11,key12)]
  • 示例代码
代码语言:javascript
复制
A = dict()
A[('foo', 'bar')] = 'hello'
A['nice', 'to', 'see'] = 'world'
A['you', 'again'] = 'do not reply'
print(A)

->
{('foo', 'bar'): 'hello', ('nice', 'to', 'see'): 'world', ('you', 'again'): 'do not reply'}

  • 该方式组成的多键值字典可以同时兼容多个维度的数据,毕竟只要是没见过的元组都可以作为 key

多 key

  • key 多键值的方法事实上已经可以解决很多问题,如果需要比较严格地控制维度可以尝试多 key 的实现方式
  • 方法核心为构造字典的值为新的字典
  • 示例代码:
代码语言:javascript
复制

A = {
    'foo': {'bar' : 'hello'},
    'nice': {'to': {'see': 'world'}},
    'you': {'again': 'do not reply'}
    }

print(A)
print(A['foo']['bar'])
print(A['nice']['to']['see'])
print(A['you']['again'])

-> 
{'foo': {'bar': 'hello'}, 'nice': {'to': {'see': 'world'}}, 'you': {'again': 'do not reply'}}
hello
world
do not reply

  • 这种方式的问题比较多:
    • 组织需要精心,层层字典需要精神是分专注
    • 某个 key 下值需要成为字典才可以增加关键词层数,那么这个值就无法成为其他有意义的内容
    • 适用于维度固定(容易维护),需要漂亮的取值代码时使用

参考资料

  1. https://www.runoob.com/python/python-dictionary.html
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • python 字典简介
    • 多键值需求描述
    • 单 key 多键值
    • 多 key
    • 参考资料
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档