鱼C论坛

 找回密码
 立即注册
查看: 4409|回复: 24

[已解决]如何去除字典中的空格,并排序输出

[复制链接]
发表于 2021-5-13 18:18:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 老污龟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值的大小正向排列,并且在输出的时候不会自己乱跑
最佳答案
2021-5-13 19:17:41
print之前用字符过滤:
d4=''
for ret in str(d3):
    if ret!=' ':
        d4+=ret
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-5-13 18:23:00 | 显示全部楼层
求大佬教学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-13 19:17:41 | 显示全部楼层    本楼为最佳答案   
print之前用字符过滤:
d4=''
for ret in str(d3):
    if ret!=' ':
        d4+=ret
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-13 19:24:47 | 显示全部楼层
Uair梦云 发表于 2021-5-13 19:17
print之前用字符过滤:

马上去试试!谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-13 19:28:29 | 显示全部楼层
Uair梦云 发表于 2021-5-13 19:17
print之前用字符过滤:

能不能麻烦讲解一下代码,为什么直接打印d4,它就已经是字典了,还是有一点看不懂,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-13 20:13:12 | 显示全部楼层
多个空格,让你很难受,是吗?……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-13 20:34:38 From FishC Mobile | 显示全部楼层
你这个想法需要纠正啊
字典打印出来冒号和逗号后面带空格是官方推荐的规范写法
而且字典的主要功能也不是打印出来让人看的,不需要纠结于这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-5-13 22:52:24 | 显示全部楼层
hrp 发表于 2021-5-13 20:34
你这个想法需要纠正啊
字典打印出来冒号和逗号后面带空格是官方推荐的规范写法
而且字典的主要 ...

我被逼无奈老师叫我们要想办法去掉,对了,还有一个问题,就是我对字典进行了排序,但是最后打印出来的时候,字典里面的顺序还是随机的,我每次打印结果都会改变我要怎么样让它按key值从小到大排列而且输出的时候它不会自己变卦,我感觉我像个呆瓜一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-13 23:35:20 | 显示全部楼层
本帖最后由 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[0]))

# 按value排序
# d2 = dict(sorted(d1.items(), key=lambda x: x[1]))

print(d2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-14 07:55:08 From FishC Mobile | 显示全部楼层
hrp 发表于 2021-5-13 23:35

蟹蟹
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-14 08:08:04 From FishC Mobile | 显示全部楼层
感谢各位大佬教学
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-14 17:48:48 | 显示全部楼层

这个方法好像会报错,就是我的字典里面的key有字符串型数据的时候
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-14 18:00:53 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-14 19:10:10 From FishC Mobile | 显示全部楼层
老污龟233 发表于 2021-5-14 17:48
这个方法好像会报错,就是我的字典里面的key有字符串型数据的时候

那是因为排序时不同数据类型不能直接比较大小所以报错,如果你想让不同数据类型能比较大小,那就要定一个不同数据类型之间比较大小的规则,比如统一转成字符串或者统一转成浮点型,不能转换类型时又怎么处理等。然后将规则写成函数,将这个函数作为sorted函数的key参数传进去。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-14 19:31:26 | 显示全部楼层
hrp 发表于 2021-5-14 19:10
那是因为排序时不同数据类型不能直接比较大小所以报错,如果你想让不同数据类型能比较大小,那就要定一个 ...

把key值提取出来放在一个列表里,如果有字符串型又有整型的就再分类一次,然后分别比大小、排序完再合起来这样实现排序然后再把key传进去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-14 21:28:19 | 显示全部楼层
老污龟233 发表于 2021-5-14 19:31
把key值提取出来放在一个列表里,如果有字符串型又有整型的就再分类一次,然后分别比大小、排 ...

分别排序完怎么合并,谁在前谁在后?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 15:52:59 | 显示全部楼层
本帖最后由 Uair梦云 于 2021-5-15 16:15 编辑

赞同楼上的观点,因为本想按楼主的同类型丢list.sort()算了,字符串 '12'<'222'<'31' 返回True  简直绝了
真奈斯,又增加代码量,还有可能分别排序完后都不知道谁前谁后

然后就是字典是无序集合,如果你又该回字典那么...天秀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-15 20:05:25 | 显示全部楼层
Uair梦云 发表于 2021-5-15 15:52
赞同楼上的观点,因为本想按楼主的同类型丢list.sort()算了,字符串 '12'

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-15 20:54:57 | 显示全部楼层
hrp 发表于 2021-5-14 21:28
分别排序完怎么合并,谁在前谁在后?

老师原话,我实在不懂怎么搞我感觉我像呆瓜一样放弃了,用列表我压根排不出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-15 21:21:16 From FishC Mobile | 显示全部楼层
老污龟233 发表于 2021-5-15 20:54
老师原话,我实在不懂怎么搞我感觉我像呆瓜一样放弃了,用列表我压根排不 ...

不是不能排,是你要规定排完序后谁在前谁在后,要不然随便也行,但就有可能不符合要求了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 21:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表