如何去除字典中的空格,并排序输出
本帖最后由 老污龟233 于 2021-5-13 22:55 编辑d1 = {1:3,2:5}
d2 = {1:5,2:7}
from collections import Counter
d1,d2 = Counter(d1),Counter(d2)
d3 = dict(d1+d2)
print(d3)
打印出来的字典冒号后面会自带空格,请问要用什么样的方法去除
——————————————————————————————————————————————
在print前面加上:
import operator
sorted(eval(d4).items(),key = operator.itemgetter(1))
想对字典进行排序但是,打印的时候出来的字典顺序依然是随机的,有什么办法能让这个字典
按key值的大小正向排列,并且在输出的时候不会自己乱跑 {:10_250:}求大佬教学 print之前用字符过滤:
d4=''
for ret in str(d3):
if ret!=' ':
d4+=ret Uair梦云 发表于 2021-5-13 19:17
print之前用字符过滤:
马上去试试!谢谢!{:10_254:} Uair梦云 发表于 2021-5-13 19:17
print之前用字符过滤:
能不能麻烦讲解一下代码{:10_254:},为什么直接打印d4,它就已经是字典了,还是有一点看不懂,谢谢!{:10_250:} 多个空格,让你很难受,是吗?…… 你这个想法需要纠正啊{:10_250:}
字典打印出来冒号和逗号后面带空格是官方推荐的规范写法
而且字典的主要功能也不是打印出来让人看的,不需要纠结于这个 hrp 发表于 2021-5-13 20:34
你这个想法需要纠正啊
字典打印出来冒号和逗号后面带空格是官方推荐的规范写法
而且字典的主要 ...
{:10_250:}{:10_250:}我被逼无奈{:10_250:}老师叫我们要想办法去掉,对了,还有一个问题,就是我对字典进行了排序,但是最后打印出来的时候,字典里面的顺序还是随机的,我每次打印结果都会改变我要怎么样让它按key值从小到大排列而且输出的时候它不会自己变卦,我感觉我像个呆瓜一样{:10_266:} 本帖最后由 hrp 于 2021-5-13 23:38 编辑
老污龟233 发表于 2021-5-13 22:52
我被逼无奈老师叫我们要想办法去掉,对了,还有一个问题,就是我对字典进 ...
# 需要Python 3.6以上版本的支持,其他版本请使用collections.OrderedDict
d1 = {9: 6, 2: 8, 1: 0, 7: 1, 4: 5, 5: 3}
# 按key排序
d2 = dict(sorted(d1.items(), key=lambda x: x))
# 按value排序
# d2 = dict(sorted(d1.items(), key=lambda x: x))
print(d2)
hrp 发表于 2021-5-13 23:35
{:10_254:}蟹蟹 感谢各位大佬教学 hrp 发表于 2021-5-13 23:35
这个方法好像会报错,就是我的字典里面的key有字符串型数据的时候 {:10_266:} 老污龟233 发表于 2021-5-14 17:48
这个方法好像会报错,就是我的字典里面的key有字符串型数据的时候
那是因为排序时不同数据类型不能直接比较大小所以报错,如果你想让不同数据类型能比较大小,那就要定一个不同数据类型之间比较大小的规则,比如统一转成字符串或者统一转成浮点型,不能转换类型时又怎么处理等。然后将规则写成函数,将这个函数作为sorted函数的key参数传进去。 hrp 发表于 2021-5-14 19:10
那是因为排序时不同数据类型不能直接比较大小所以报错,如果你想让不同数据类型能比较大小,那就要定一个 ...
{:10_266:}把key值提取出来放在一个列表里,如果有字符串型又有整型的就再分类一次,然后分别比大小、排序完再合起来这样实现排序{:10_266:}然后再把key传进去{:10_285:} 老污龟233 发表于 2021-5-14 19:31
把key值提取出来放在一个列表里,如果有字符串型又有整型的就再分类一次,然后分别比大小、排 ...
分别排序完怎么合并,谁在前谁在后? 本帖最后由 Uair梦云 于 2021-5-15 16:15 编辑
赞同楼上的观点,因为本想按楼主的同类型丢list.sort()算了,字符串 '12'<'222'<'31' 返回True简直绝了{:10_269:}
真奈斯,又增加代码量,还有可能分别排序完后都不知道谁前谁后{:10_266:}
然后就是字典是无序集合,如果你又该回字典那么...天秀{:10_264:}
Uair梦云 发表于 2021-5-15 15:52
赞同楼上的观点,因为本想按楼主的同类型丢list.sort()算了,字符串 '12'
{:10_266:} hrp 发表于 2021-5-14 21:28
分别排序完怎么合并,谁在前谁在后?
{:10_266:}老师原话,我实在不懂怎么搞{:10_282:}我感觉我像呆瓜一样{:10_299:}放弃了,用列表我压根排不出来{:10_299:} 老污龟233 发表于 2021-5-15 20:54
老师原话,我实在不懂怎么搞我感觉我像呆瓜一样放弃了,用列表我压根排不 ...
不是不能排,是你要规定排完序后谁在前谁在后{:10_245:},要不然随便也行,但就有可能不符合要求了
页:
[1]
2