字典的魔法

简介: dict 创建一个字典 info = { "k1": "v1", "k2":"v2" } 字典value info = { "k1":18, "k2":True, "k3":[ 11, 22, 33, .

dict

创建一个字典

info = {
    "k1": "v1",
    "k2":"v2"
}

字典value

info = {
    "k1":18,
    "k2":True,
    "k3":[
        11,
        22,
        33,
        {
            'kk1':'vv1',
            'kk2':'vv2',
            'kk3':'vv3'
        }
    ]
}
print(info)
---
{'k3': [11, 22, 33, {'kk3': 'vv3', 'kk1': 'vv1', 'kk2': 'vv2'}], 'k2': True, 'k1': 18}

布尔值为key时,如果有数字1或0为key时,可能会重复,key需要是唯一的。

info = {
    1:'asdf',
    "hehe":"asdf",
    True:"123"
}
print(info)
---
{1: '123', 'hehe': 'asdf'}

要点

  • 数字允许为key
  • 列表不能做为字典的key
  • 字典也不能做为字典的key
  • 字典是无序的。
  • 字典可以循环,默认循环所有的key

字典取值

v = info["k1"]
print(v)
---
18

通过索引的方式找到指定的值。

v = info["k3"][3]["kk3"][0]
print(v)
---
11

删除键值对

del info['k1']
print(info)
---
{'k2': True, 'k3': [1, 22, 33, {'kk2': 'vv2', 'kk3': [11, 22, 33], 'kk1': 'vv1'}]}

del info['k3'][3]['kk1']
print(info)
---
{'k1': 18, 'k3': [1, 22, 33, {'kk2': 'vv2', 'kk3': [11, 22, 33]}], 'k2': True}

找出所有的key

for item in info.keys():      #不使用keys()方法默认循环所有key
   print(item,info(item))
---
k1
k3
k2

找出所有的values

for item in info.values():
    print(item)
---
True
18
[1, 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': [11, 22, 33]}]

同时取出key,values------> items()方法

for k,v in info.items():
    print(k,v)
---
k3 [1, 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': [11, 22, 33]}]
k1 18
k2 True

字典中的方法

def items()
def values()
def items()
def update()
def clear()
def copy()
def fromkeys()
def get()
def pop()
def popitem()

根据序列创建字典,并指定统一的值---fromkeys

dic = {
    "k1":"v1"
}
v = dict.fromkeys(["k1",123,"999"],123)
print(v)
---
{123: 123, 'k1': 123, '999': 123}

根据key获取值,key不存在时,可以指定默认值,默认值不存在是返回None

dic = {
    "k1":"v1"
}
v = dic.get('k1')
print(v)
---
v1
# 当要取的key在字典中没有时不会报错,返回None
v = dic.get('kkk',1111)
print(v)
---
1111

删除key,并获取值 pop

dic = {
    "k1":"v1",
    "k2":"v2"
}
dic.pop('k1')
print(dic)
---
{'k2': 'v2'}

v = dic.pop('k1')
print(dic,v)
---
{'k2': 'v2'} v1

# pop后可以加默认值,当值不存在时可以返回默认值
v = dic.pop('k1',90)
···
#### 设置默认值 setdefault

v = dic.setdefault('k3','12') #当值key值存在时,不改变,不存在加上

print(dic,v)

{'k3': '12', 'k1': 'v1', 'k2': 'v2'} 12

#### 更新

dic = {

"k1":"v1",
"k2":"v2"

}
v = dic.update({'k1':'1111','k3':123})

print(dic,v)

{'k3': 123, 'k1': '1111', 'k2': 'v2'} None

第二种写法

dic.update(k1=123,k3=123,k4="asdf") #python默认转换为字典

## 总结
#### 1.数字
int(...)
#### 2.字符串

replace/find/join/strip/startswith/split/upper/lower/format
template = "i am {name}, age: {age}"
v = template.format(name='alex',age=19)
v = template.format(**{"name": 'alex', 'age': 19)
print(v)

#### 3.列表

append/extend/insert
索引、切片、循环

#### 4.元组
忽略
索引、切片、循环,以及元素不能被修改删除等

#### 5.字典

get / update / keys / values / items
for 索引
v = "k1" in dic.values()

print(v)

False

#### 6.布尔值

0 1
bool(...)
False------> None "" "{}" "[]" "()" 0

目录
相关文章
|
开发工具 git
IDEA 错误运行’Application’: !invalid format: `命令行过长
刚刚在Git下拉的项目,启动的时候就报错了。记录一下
3199 0
IDEA 错误运行’Application’: !invalid format: `命令行过长
|
JSON 算法 数据安全/隐私保护
使用asp开发 希音shein开放平台接口调用记录
最近接了个小项目要求通过希音的开放平台接口采集一些数据导入到工厂erp系统。当然了我主要是负责采集,说是采集,其实就是通过接口获取数据,并不是被动获取,是合法的在授权下进行的一种操作。客户指定要求用asp语言,这种古老语言,呵呵,一般平台代码范例都不做考虑的,但是根据文档硬是给撸出来了。
672 0
使用asp开发 希音shein开放平台接口调用记录
|
计算机视觉
论文阅读笔记 | Transformer系列——Transformer in Transformer
论文阅读笔记 | Transformer系列——Transformer in Transformer
451 0
论文阅读笔记 | Transformer系列——Transformer in Transformer
|
监控
通过Zabbix Web界面查看主机的监控方式
通过Zabbix Web界面查看主机的监控方式
432 1
|
存储 监控 安全
基于SaaS的教务系统平台设计构想
本篇是一篇自然科学论文,仅供参考。 大学挑战杯复赛没过,放博客纪念。
532 0
基于SaaS的教务系统平台设计构想
|
存储 安全 前端开发
NFT数藏古玩拍卖平台运营模式详解(源码demo示例)
NFT数藏古玩拍卖平台是指一个以数字藏品为主题的拍卖平台,允许买家和卖家在平台上进行数字藏品的拍卖和交易。
|
负载均衡 网络协议 Unix
1.11 Linux的主要应用领域有哪些?
与Windows操作系统软件一样,linux也是一个操作系统软件。但与Windows不同的是,Linux是一套开放源代码程序的,并可以自由传播的类UNIX操作系统软件,随着信息技术的更新变化,Linux应用领域已趋于广泛。
454 0
1.11 Linux的主要应用领域有哪些?
|
机器学习/深度学习 人工智能 自然语言处理
Quick BI产品核心功能大图(一):可视分析之路
Quick BI是专为云上用户量身打造的智能数据分析和可视化BI产品,帮助企业快速完成从传统的数据分析到数据云化+分析云化的转变,将企业的业务数据产出后以最快的速度被推送到各组织侧消费使用。 本篇着重介绍Quick BI在可视化分析上的能力与演进之路。
1070 0
|
机器学习/深度学习 人工智能 运维
深度 | 大数据算法应用的测试发展之路
随着最近几年数据计算力与机器智能算法的兴起,基于大数据 AI 算法的应用愈来愈热,大数据应用在各个行业也不断涌现。测试技术作为工程技术的一部分,也随着时代的不断变化在同步演进,在当下 DT 时代,如何测试和保障一个基于大数据的应用的软件质量,成为测试界的一个难题。 本文通过系统性地介绍阿里巴巴 AI 中台的技术质量体系——搜索推荐广告应用的质量是如何测试的,来尝试回答一下这个问题,希望能给大家带来一些借鉴,欢迎斧正,以便改进。
10330 3
深度 | 大数据算法应用的测试发展之路
|
弹性计算 负载均衡
阿里云共享流量包是什么以及共享流量包使用方法
什么是共享流量包?阿里云共享流量包可用来抵扣按流量计费的云服务器ECS、弹性公网IP和负载均衡SLB多地域产生的流量,而且使用很简单
1776 0
阿里云共享流量包是什么以及共享流量包使用方法
下一篇
开通oss服务