Python编程如何对列表中字典元素进行排序的方法详解

作者&投稿:戴帝 (若有异议请与网页底部的电邮联系)
~
这篇文章主要介绍了Python编程对列表中字典元素进行排序的方法,涉及Python针对列表及字典元素的遍历、读取、转换相关操作技巧,需要的朋友可以参考下
本文实例讲述了Python编程对列表中字典元素进行排序的方法。分享给大家供大家参考,具体如下:
内容目录:
1. 问题起源
2. 对列表中的字典元素排序
3. 对json进行比较(忽略列表中字典的顺序)
一、问题起源
json对象a,b


a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}'
b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}'特点:a,b对应的Python的对象中键对应的键值——列表中包含着相同的字典元素,但是唯一不同的是顺序不同。如果忽略顺序,如何判断两个json是否相等。因为字典本身是自己按键排序的,列表是按加入的顺序排序的,如果对列表中的字典元素进行排序就可以轻松地排序了。如果列表中是普通的元素(不是字典),通过list(set())组合可以读列表进行排序,而列表中如果是字典元素不能使用list(set())组合,看提示:


>>> a = [{'a':1, 'b':2}, {'c':3}]
>>> a
[{'a': 1, 'b': 2}, {'c': 3}]
>>> b = set(a)
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
b = set(a)
TypeError: unhashable type: 'dict'提示为字典是不可进行哈希操作的类型(普通非字典的元素进行哈希操作即可轻松排好序)。
那么问题的本质即:如何对列表中的字典元素排序。
二、对列表中的字典元素排序
还好,列表有sorted函数,试一下


>>> p = [{'b': 2}, {'a': 1, 'c': 3}]
>>> q = [{'a': 1, 'c': 3}, {'b': 2}]
>>> p
[{'b': 2}, {'a': 1, 'c': 3}]
>>> q
[{'a': 1, 'c': 3}, {'b': 2}]
>>> pp = sorted(p)
>>> qq = sorted(q)
>>> pp
[{'b': 2}, {'a': 1, 'c': 3}]
>>> qq
[{'b': 2}, {'a': 1, 'c': 3}]
>>> pp == qq
True
>>> p == q
False可以看出,ok的,并且可以看出排序的原则是元素个数。
三、对json进行比较(忽略列表中字典的顺序)


import json
def compare_json(a, b):
aa = json.loads(a)
bb = json.loads(b)
len_a = len(aa)
len_b = len(bb)
if len_a != len_b:
return False
else:
for key in aa:
if not bb.has_key(key):
return False
else:
if sorted(aa[key]) != sorted(bb[key]):
return False
return True
if name == "main":
a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}'
b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}'
print compare_json(a, b)细节:自己写json格式时,a = "{'road':1}" json.loads(a) 错误,得写成a = '{"road:1}' 【单引号在外】


Python有什么特点?
以下是Python的一些主要特点:1. 简洁优雅:Python以简洁优雅的语法著称,使得代码易于阅读和编写。这使得Python成为学习编程的理想选择,同时也提高了代码的可维护性和可读性。2. 易学易用:相对于许多其他编程语言,Python非常容易学习和上手。它的语法简单明了,不需要大量的编码经验就可以开始编写代码。Py...

初学者学Python编程如何快速入门?
1、了解 Python 编程基础 首先第一点,要能够看懂了解变量、基础语法、编程规范等,这些事能够上手编写Python 代码的前提。其次第二点,对于数据结构,字符串、列表、字典等需要比较熟练运用。刚开始的这部分就做一些简单的练习,构造出一个数据类型,然后再实现基本的用法。比如你自己构造一个列表,实现列...

python 编程如何入门?
如果您是初学者,可以从以下几个方面入手:1. 学习 Python 基础语法,包括变量、数据类型、运算符、条件语句、循环语句等。2. 学习 Python 函数和模块,了解函数的定义和调用,以及如何导入和使用模块。3. 学习 Python 面向对象编程,了解类、对象、继承等概念。4. 学习 Python 常用标准库,如 os、sys...

初学编程为什么要学 Python?
1、易学易用:Python的语法简单易懂,代码清晰易读,因此初学者可以更快地掌握它。2、应用广泛:Python可以用于许多领域,比如数据处理、机器学习、Web开发等。因此,学习Python可以为未来的职业发展提供更多选择。3、开源社区活跃:Python的开源特性使得它成为一个活跃的开发社区,有着丰富的教程、文档和支持...

为什么要学python?python有哪些优势?
python作为一门高级编程语言,它的诞生虽然很偶然,但是它得到程序员的喜爱却是必然之路,Python入门简单,相比于其他语言,初学者很容易入门,除此之外,Python还具有以下优点:1. 简单:Python奉行简洁主义,易于读写,它使你能够专注于解决问题而不是去搞明白语言本身。2. 免费:Python是开源软件。这意味...

python编程,如何用循环计算50至100中偶数之和。
4、使用python给你写了个,你分类是其他编程语言,所以不清楚你想用什么语言写。5、参考以下代码:素数计算筛法还有更高的应用方式,比如while中对i不是每次加而是每次加素数表前若干个数的积,如6,30,210中的某一个。6、在Python中,求1~10的平方和可以使用循环来实现,常见的循环有for循环和...

Python适合开发什么_python适合开发什么程序
1.WEB开发 Python拥有很多免费数据函数库、免费web网页模板系统、以及与web服务器进行交互的库,可以实现web开发,搭建web框架,目前比较有名气的Pythonweb框架为Django。从事该领域应从数据、组件、安全等多领域进行学习,从底层了解其工作原理并可驾驭任何业内主流的Web框架。2.网络编程 网络编程是Python学习...

python的编程怎么样?
Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,所以常被称为胶水语言,能够把用其他语言制作的各种模块(尤其是C\/C++)很轻松地联结在一起,是国内外众多企业使用的关键开发语言之一。python的创始人为Guido van Rossum,python的开发受到Modula-3语言的影响,python具有易读、可扩展...

python是什么样的编程语言?
而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。 在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。 面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向...

Python编程语言的特点
python既支持面向过程编程,也支持面向对象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,python以一种非常强大又简单的方式实现面向对象编程。3、可移植性 由于python的...

乃东县18441198128: 在python中怎么把列表中的元素添加到字典中 -
蒲杰血府: >>> a=['one','two','three'] >>> b={} >>> [b.setdefault(x,y) for x,y in enumerate(a)] ['one', 'two', 'three'] >>> b {0: 'one', 1: 'two', 2: 'three'} >>>

乃东县18441198128: python 元组中有字典,如何对其进行排序?谢谢. -
蒲杰血府: disks_info=[{u'diskname': u'/dev/vda', u'disktype': u'HDD', u'tag': [u'mounted', u'boot'], u'slotnum': None, u'rpm': 7200, u'size': 50}, {u'diskname': u'/dev/vdb', u'disktype': u'HDD', u'tag': [u'osd_data'], u'slotnum': None, u'rpm': 7200, u'size': 30}, {u'...

乃东县18441198128: python列表里面有字典,该怎么读取字典中的value -
蒲杰血府: a=[1,2,3,{4:'a'},5,{'b':6},7] for x in a: if isinstance(x,dict): for k,v in x.items(): print v

乃东县18441198128: python 怎么向字典中添加元素 -
蒲杰血府: 1首先需要安装Cython网载进行本安装pythonsetup.pyinstall2载Sklearn包进行本安装(使用pip或easy_install总错cannotimportmurmurhash3_32终本安装功)3安装用nosetests-vsklearn进行测试

乃东县18441198128: python用lambda写函数统计字典中元素个数 -
蒲杰血府: wordCountsGrouped = map(lambda (x,y): (x, len(y)), wordsGrouped.items())

乃东县18441198128: python字典中嵌入列表,如何获取列表第一个元素 -
蒲杰血府: dict1 = {'a':1,'b':2,'c':['x','y','z']} dict1['c'][0] #'x'

乃东县18441198128: python怎么比较字典中的元素 -
蒲杰血府: i={1:"192.168.0.1:1000",2:"192.168.0.1:1000",3:"192.168.0.1:1000",4:"192.168.0.1:1001",5:"192.168.0.1:1001",6:"192.168.0.1:1002",7:"192.168.0.1:1003"}for f in range(1,8):a=i[f]for w in range(2,8):b=i[w]if a==b and f!=w:print f,w后面的再操作一下字典即可

乃东县18441198128: python 列表怎么转化为字典 写了一部分了 希望能补充完整 -
蒲杰血府: list不要做变量名.result = {}for item in list_: item = item[1:-1].split(' ') result[item[0]] = item[1]print result

乃东县18441198128: python 列表中的列表 转换字典 (list of list of str) - > dict of {tuple of str: int} -
蒲杰血府: python3.2a=[['cola', 'juice', 'coffee', 'tea'],['cola', 'juice', &#...

乃东县18441198128: python中,如何将多个字典组合成一个字典 -
蒲杰血府: Python编程将多个字典文件合并成一个字典文件,代码如下://例子:合并a.txt和b.txt两个字典文件 def readf(filename): lines = file(filename).readlines() dic = {} for i in lines: i_ = i.split() dic[i_[0]] = int(i_[1]) return dic dica = readf('a.txt') dicb = readf('b...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网