1. json序列化(字典转成字符串)方法:

dumps:无文件操作            dump:序列化+写入文件

2. json反序列化(字符串转成字典)方法:

loads:无文件操作              load: 读文件+反序列化

1、基本使用

import json# 导入模块
d = {'s':'you','d':'are'} #给一个字典
j = json.dumps(d)#dumps字典转换成字符串
print(type(j))
print(j) d1 = json.loads(j)#loads字符串转换成字典
print(type(d1))
print(d1)
print(d1.keys())#输出字典的key
print(d1.values())#输出字典的值 执行后得到的结果:
<class 'str'>
{"d": "are", "s": "you"} <class 'dict'>
{'d': 'are', 's': 'you'}
dict_keys(['d', 's'])
dict_values(['are', 'you'])

2、json.dumps()

json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。

import json

name_emb = {'a':'','b':'','c':'','d':''} 

jsObj = json.dumps(name_emb)    

print(name_emb)
print(jsObj) print(type(name_emb))
print(type(jsObj))

    运行结果如下:

{'a': '', 'c': '', 'b': '', 'd': ''} {"a": "", "c": "", "b": "", "d": ""} <type 'dict'> <type 'str'>

3、json.loads()

json.loads()用于将str类型的数据转成dict。

import json

name_emb = {'a':'','b':'','c':'','d':''} 

jsDumps = json.dumps(name_emb)    

jsLoads = json.loads(jsDumps) 

print(name_emb)
print(jsDumps)
print(jsLoads) print(type(name_emb))
print(type(jsDumps))
print(type(jsLoads))

运行结果如下:

'a'变成了u'a'是因为发生了类型转换,str会转换成unicode

{'a': '', 'c': '', 'b': '', 'd': ''}
{"a": "", "c": "", "b": "", "d": ""}
{u'a': u'', u'c': u'', u'b': u'', u'd': u''}
<type 'dict'>
<type 'str'>
<type 'dict'>

4、json.dump()

json.dump()用于将dict类型的数据转成str,并写入到json文件中。下面两种方法都可以将数据写入json文件

import json  

name_emb = {'a':'','b':'','c':'','d':''}  

emb_filename = ('/home/cqh/faceData/emb_json.json')  

# 方法 1
jsObj = json.dumps(name_emb)
with open(emb_filename, "w") as f:
f.write(jsObj)
f.close() # 方法 2
json.dump(name_emb, open(emb_filename, "w"))

5、json.load()

json.load()用于从json文件中读取数据。

import json  

emb_filename = ('/home/cqh/faceData/emb_json.json')  

jsObj = json.load(open(emb_filename))    

print(jsObj)
print(type(jsObj)) for key in jsObj.keys():
print('key: %s value: %s' % (key,jsObj.get(key)))

运行结果如下:

{u'a': u'', u'c': u'', u'b': u'', u'd': u''}
<type 'dict'>
key: a value: 1111
key: c value: 3333
key: b value: 2222
key: d value: 4444

python学习笔记:json与字典的转换(dump 和dumps load和loads的区别)的更多相关文章

  1. 【python学习笔记】4.字典:当索引不好用时

    [python学习笔记]4.字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以为任何不可改变的类型,包括内置类型,或者元组,字符串 通过大括号: phonebook={ ...

  2. python学习笔记6(字典)

    映射:键值对的关系,键(key)映射值(value) 字典是Python唯一的映射类型 >>> phonebook = {'} >>> phonebook {'} ...

  3. python学习笔记之三:字典,当索引不好用时

    字典是python中唯一内建的映射类型.字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里.键可以是数字,字符串甚至是元组. 1. 创建和使用字典 字典可以通过下面的方式创建: phon ...

  4. python学习笔记(三)、字典

    字典是一种映射类型的数据类型.辣么什么是映射呢?如果看过<数据结构与算法>这一本书的小伙伴应该有印象(我也只是大学学习过,嘻嘻). 映射:就是将两个集合一 一对应起来,通过集合a的值,集合 ...

  5. Python 学习笔记6 变量-字典

    字典是python中一个十分重要的变量,他是一个可变的容器对象.通过一组key(键)和value(值)对组成一个元素. 组成形式为{'key':'value', 'key':'value'}.整个字典 ...

  6. python学习笔记07-元组 字典

    元组: 元组里面的元素不可修改  创建后只可读  不可写 一个元素的时候 在后面加一个逗号 字典: 无序的 Python 中唯一的映射类型 采用键值对的形式存储数据 key必须是可哈希的  可哈希表示 ...

  7. python学习笔记(三)-列表&字典

    列表: 一.列表操作"""Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.比如,列出班里所有同学的名字,就可以用一 ...

  8. python学习笔记(datetime、字符串转换)

    datetime对象与字符串可以互相转化 代码如下: from datetime import datetime def datetime_string(time): return time.strf ...

  9. python 学习笔记(三)根据字典中值的大小对字典中的项排序

    字典的元素是成键值对出现的,直接对字典使用sorted() 排序,它是根据字典的键的ASCII编码顺序进行排序,要想让字典根据值的大小来排序,可以有两种方法来实现: 一.利用zip函数将字典数据转化为 ...

随机推荐

  1. laravel 简单应用 redis

    1.连接配置 database.php 中 测试用 都没做修改 2.创建测试路由及控制器 //添加路由 Route::get('testRedis','RedisController@testRedi ...

  2. 为什么 String 在 Java 中是不可变的(终极答案)

    为什么 String 在 Java 中是不可变的(终极答案) 我们可以从2个角度去看待这个问题: 1.为什么要设计成不可变2.如何保证不可变? 1.为什么设计不可变? 1.String对象缓存在Str ...

  3. mysql 性能调优 参数随写

    set global innodb_buffer_pool_size = 12*1024*1024*1024;set global bulk_insert_buffer_size = 12582912 ...

  4. Python面试题之如何用Python来发送邮件?

    python实现发送和接收邮件功能主要用到poplib和smtplib模块. poplib用于接收邮件,而smtplib负责发送邮件. 代码如下: 1 #! /usr/bin/env python 2 ...

  5. Codeforce 464A. No to Palindromes!

    A. No to Palindromes! time limit per test 1 second memory limit per test 256 megabytes input standar ...

  6. css 图片有间隔多个Img标签之间的间隙

    今天写css时发现,图片加起来刚好是900px的三张图片,不能在一个900px宽容器放下,因为图片之间有间隔,我猜是浏览器把两个img标签之间的空格当成了空白节点. 在网上找到了几个不错的解决方法: ...

  7. ubuntu16.04安装docker11.09

    1.    安装Docker 操作系统 ubuntu16.04 1.1.   配置源文件 $sudo apt-get update #允许 apt 命令 HTTPS 访问 Docker 源 $sudo ...

  8. 面试题:实现call、apply、bind

    面试题:实现call.apply.bind 实现bind module.exports = function(Tcontext, ...args) { let globalThis = typeof ...

  9. css 设置div基于父元素宽度的宽高相等的样式

    1. 前言 在移动开发中,有时候需要设置一个宽高相等的div,并且为了使它能够适配更多的屏幕,于是需要让它的宽高和屏幕宽高成一定的比例.这里将提供一个css的解决方案,让一些后端开发不用再写繁琐的js ...

  10. Android中Parcelable的原理和使用方法

    Parcelable的简单介绍 介绍Parcelable不得不先提一下Serializable接口,Serializable是Java为我们提供的一个标准化的序列化接口,那什么是序列化呢? 进行And ...