python dict如何对其list中的dict排序

Python中如何以dict的key排序输出?_百度知道
Python中如何以dict的key排序输出?
a;b':3};:1, 'a&#39,我要输出成;, 2c如d = {&#39, 'c&#39, 3b:2
c'; keys = d, 3):3}&.keys() # 方法二&gt..;&;& d = {&#39, 2), d[key];a'&b&#39:1.items() ) # 方法一[('&c&#39.b&#39, 1)]&gt:.;&gt:2;&gt, &#39.sort()&gt, ';&&&, ('&a' sorted(;&gt.
a 3b 2c 1&gt., ('&gt&gt
其他类似问题
python的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁创建列表sample_list = ['a',1,('a','b')]
Python 列表操作sample_list = ['a','b',0,1,3]
得到列表中的某一个值value_start = sample_list[0]end_value = sample_list[-1]
删除列表的第一个值del sample_list[0]
在列表中插入一个值sample_list[0:0] = ['sample value']
得到列表的长度list_length = len(sample_list)
列表遍历for element in sample_list:&&& print(element)&&&&Python 列表高级操作/技巧
产生一个数值递增列表num_inc_list = range(30)#will return a list [0,1,2,...,29]
用某个固定值初始化列表initial_value = 0list_length = 5sample_list = [ initial_value for i in range(10)]sample_list = [initial_value]*list_length# sample_list ==[0,0,0,0,0]
附:python内置类型1、list:列表(即动态数组,C++标准库的vector,但可含不同类型的元素于一个list中)a = ["I","you","he","she"]&&&&& #元素可为任何类型。
下标:按下标读写,就当作数组处理以0开始,有负下标的使用0第一个元素,-1最后一个元素,-len第一个元 素,len-1最后一个元素取list的元素数量&&&&&&&&&&&&&&&&len(list)&& #list的长度。实际该方法是调用了此对象的__len__(self)方法。&
创建连续的listL = range(1,5)&&&&& #即 L=[1,2,3,4],不含最后一个元素L = range(1, 10, 2) #即 L=[1, 3, 5, 7, 9]
list的方法L.append(var)&& #追加元素L.insert(index,var)L.pop(var)&&&&& #返回最后一个元素,并从list中删除之L.remove(var)&& #删除第一次出现的该元素L.count(var)&&& #该元素在列表中出现的个数L.index(var)&&& #该元素的位置,无则抛异常&L.extend(list)& #追加list,即合并list到L上L.sort()&&&&&&& #排序L.reverse()&&&& #倒序list 操作符:,+,*,关键字dela[1:]&&&&&& #片段操作符,用于子list的提取[1,2]+[3,4] #为[1,2,3,4]。同extend()[2]*4&&&&&& #为[2,2,2,2]del L[1]&&& #删除指定下标的元素del L[1:3]& #删除指定下标范围的元素list的复制L1 = L&&&&& #L1为L的别名,用C来说就是指针地址相同,对L1操作即对L操作。函数参数就是这样传递的L1 = L[:]&& #L1为L的克隆,即另一个拷贝。&&&&&&&&list comprehension&& [ &expr1& for k in L if &expr2& ]&&&&&&&&&&&&&&&&2、dictionary: 字典(即C++标准库的map)dict = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'}每一个元素是pair,包含key、value两部分。key是Integer或string类型,value 是任意类型。键是唯一的,字典只认最后一个赋的键值。
dictionary的方法D.get(key, 0)&&&&&& #同dict[key],多了个没有则返回缺省值,0。[]没有则抛异常D.has_key(key)&&&&& #有该键返回TRUE,否则FALSED.keys()&&&&&&&&&&& #返回字典键的列表D.values()D.items()
D.update(dict2)&&&& #增加合并字典D.popitem()&&&&&&&& #得到一个pair,并从字典中删除它。已空则抛异常D.clear()&&&&&&&&&& #清空字典,同del dictD.copy()&&&&&&&&&&& #拷贝字典D.cmp(dict1,dict2)& #比较字典,(优先级为元素个数、键大小、键值大小)&&&&&&&&&&&&&&&&&&& #第一个大返回1,小返回-1,一样返回0&&&&&&&&&&&&dictionary的复制dict1 = dict&&&&&&& #别名dict2=dict.copy()&& #克隆,即另一个拷贝。
3、tuple:元组(即常量数组)tuple = ('a', 'b', 'c', 'd', 'e')可以用list的 [],:操作符提取元素。就是不能直接修改元素。
4、string:&&&& 字符串(即不能修改的字符list)str = "Hello My friend"字符串是一个整 体。如果你想直接修改字符串的某一部分,是不可能的。但我们能够读出字符串的某一部分。子字符串的提取str[:6]字符串包含 判断操作符:in,not in"He" in str"she" not in str
string模块,还提供了很多方法,如S.find(substring, [start [,end]]) #可指范围查找子串,返回索引值,否则返回-1S.rfind(substring,[start [,end]]) #反向查找S.index(substring,[start [,end]]) #同find,只是找不到产生ValueError异常S.rindex(substring,[start [,end]])#同上反向查找S.count(substring,[start [,end]]) #返回找到子串的个数
S.lowercase()S.capitalize()&&&&& #首字母大写S.lower()&&&&&&&&&& #转小写S.upper()&&&&&&&&&& #转大写S.swapcase()&&&&&&& #大小写互换
S.split(str, ' ')&& #将string转list,以空格切分S.join(list, ' ')&& #将list转string,以空格连接
处理字符串的内置函数len(str)&&&&&&&&&&&&&&& #串长度cmp("my friend", str)&& #字符串比较。第一个大,返回1max('abcxyz')&&&&&&&&&& #寻找字符串中最大的字符min('abcxyz')&&&&&&&&&& #寻找字符串中最小的字符
string的转换&&&&&&&&&&&&oat(str) #变成浮点数,float("1e-1")& 结果为0.1int(str)&&&&&&& #变成整型,& int("12")& 结果为12int(str,base)&& #变成base进制整型数,int("11",2) 结果为2long(str)&&&&&& #变成长整型,long(str,base)& #变成base进制长整型,
字符串的格式化(注意其转义字符,大多如C语言的,略)str_format % (参数列表) ?#参数列表是以tuple的形式定义的,即不可运行中改变&&&print ""%s's height is %dcm" % ("My brother", 180)&&&&&&&&& #结果显示为 My brother's height is 180cm
。。。。。。。。。。。。。。。。。。
list 和 tuple 的相互转化
tuple(ls)&list(ls)
阅读(...) 评论() &赶快加入吧
收藏,3.6k 浏览
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
最近在看&&Python基础编程&&,里面第二章(列表和元组)里,有一段关于高级排序的讲解
如果希望元素能按照特定的方式进行排序(而不是sort函数默认的方式,即根据python的默认排序规则按升序排列元素),那么可以通过compare(x,y)形式自定义比较函数。
compare(x,y)函数会在x&y时返回负数,在x&y时返回正数,如果x=y则返回0(根据你的定义)。定义好该函数之后,就可以提供给sort方法作为参数了。内建函数cmp提供了比较函数的默认实现方式:
&&& cmp(42,32)
&&& cmp(99,100)
&&& cmp(10,10)
&&& numbers = [5,2,9,7]
&&& numbers.sort(cmp)
&&& numbers
里面有讲到:定义好该函数后,就可以提供给sort方法作为参数了,但是如何定义?
还有,我看代码里用不用cmp作为sort的参数,numbers的输出都是一样的嘛,那,需要cmp参数干些什么呢在sort的方法里。
请大家帮忙回答一下,谢谢。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
sort参数的完整定义见:
如果我想降序排序呢,这时就要自定义cmp方法(当然更方便的是numbers.sort(reverse=True))
numbers=[5,2,9,7]
numbers.sort(lambda a,b:b-a)
如果数组成员不是数字,而是其它的类型例如dict,想根据某个属性来排序
persons=[{'name':'zhang3','age':15},{'name':'li4','age':12}]
[{'name':'zhang3','age':15},{'name':'li4','age':12}]
persons.sort(lambda a,b:a['age']-b['age'])
[{'age': 12, 'name': 'li4'}, {'age': 15, 'name': 'zhang3'}]
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
实际上sort()方法在不传入参数func的时候 默认cmp为None。
调用的是lambda x,y: cmp(x, y),而实际上就是调用cmp函数。即:
numbers = [5,2,9,7]
numbers.sort()
#sort()函数判断cmp为None,则调用`lambda x,y: cmp(x, y)`
numbers.sort(cmp=None) #等效于numbers.sort()
numbers.sort(cmp=cmp)
#sort()判断cmp存在,并且不为None,则通过调用`cmp(x,y)`来排序
#虽然结果是相同的,可实际执行流程是不同的(这里我不确定sort()内部是用匿名函数还是直接用cmp来实现的,不过应该没有多大区别。)
numbers.sort(cmp)
#sort()通过*args来寻找是否存在没有指定变量的传入参数。
#函数判断其是否callalbe,如果是则赋值给cmp
#函数执行`cmp(x,y)`来排序
numbers.sort(custom_sort_method)
#sort()通过*args来寻找是否存在没有指定变量的传入参数。
#函数判断其是否callalbe,即是否是函数,如果是则赋值给cmp = custom_sort_method
# 函数调用`cmp(x,y)`来排序,但此时的cmp实际上已经是custom_sort_method方法了
numbers.sort(cmp = custom_sort_method)
# 此时函数直接发现cmp不为None,则直接执行cmp函数来排序,而此时cmp也已经是custom_sort_method方法了
如果要实现自定义比较函数则需要重新指定cmp为你构造的比较函数,如下:
numbers = [5,2,9,7]
def reverse_numeric(x, y):
return y - x
numbers.sort(cmp = reverse_numeric)
#也可以直接写成
numbers.sort(revers_numeric)
#或者直接传入匿名函数
numbers.sort(lambda x,y: y-x)
另外,在python3.x中取消了cmp参数,也不支持直接往sort()里面传函数了。可以构造排序函数传递给key来实现。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
Python List sort()方法应用:
同步到新浪微博
不要错过该问题的后续解决方案
如果你没找到答案,记得登录关注哦,大家会尽全力帮你解决的 ^___^
最专业的开发者社区
最前沿的技术问答,最纯粹的技术切磋。让你不知不觉中开拓眼界,提高技能,认识更多朋友。
分享到微博?
关闭理由:
删除理由:
忽略理由:
与已有问题重复
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
内容质量差,或不适合在本网站出现
无意义讨论型问题
其他原因(请补充说明)
举报理由:
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复
内容质量差,或不适合在本网站出现
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:关于python中dict的排序问题_百度知道
关于python中dict的排序问题
ok&#39, ';;&copyright&quot.4;:38;.4,为什么dict在输入后就出现了改变排序: ', 'ok';;menber&#39: &#39:c0e311e010;,' for more information, & x{';axis&#39, May 18 2014, 10; 如上所示;;&?怎么使他们排序不变呢:22) [MSC& or &credits& x={&#39.1600 32 bit (Intel)] on win32Type &quot:&#39.1 (v3;&menber&#39:&#39: &#39.&gt,&#39,'math';&gt.1;}&main':'relax';}&gt:'main'number'license()&relax&#39: 'axis'math'birght'birght'&number&#39, &#39Python 3
提问者采纳
keys() 生成的列表来排序 x.keys()[0]
x,在不同电脑上显示都不同。只有通过 x因为字典是无序的
提问者评价
太给力了,你的回答完美地解决了我的问题,非常感谢!
其他类似问题
按默认排序
其他2条回答
python中字典是通过键而不是相对位置来存储的,所以没有固定从左至右的顺序
字典本身是无序的,如果一定要输入顺序的话,那建议使用列表
python的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁python list的sorted排序问题,求大神解答_百度知道
python list的sorted排序问题,求大神解答
我想统计下词频并排序:质量孩子质量质量快递每一行都只有一个词我的文件格式是,问大神如何降幂排序
&&&print&)&&w_&=&word_dict&-*-&nbsp.rstrip()&&=&w&&&&&nbsp,k);&ww&&&&&&nbsp:&+=1&-*-with&1&&&word_dict[w]&&&utf-8&in&&nbsp:&nbsp:&r'&nbsp.readlines()&&&(k;open('&nbsp:&word:&&word_dict[w]&nbsp.iteritems();&w&&&nbsp.txt';&&&&&&&&words&nbsp,&'=&&&as&w;&&nbsp,&f&&&&word_&;&0)&&&w_count&&&&f;&=&&{}&for&&=&&if&&nbsp#&&&nbsp,v);&nbsp,&sorted(word_&nbsp:(v;&&&key=lambda&nbsp.get(w;reverse=True)&nbsp,&&&=&nbsp
不行捏,写入不了文件
其他类似问题
python的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 python dict 的文章

 

随机推荐