老污龟233 发表于 2021-5-13 18:18:49

如何去除字典中的空格,并排序输出

本帖最后由 老污龟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值的大小正向排列,并且在输出的时候不会自己乱跑

老污龟233 发表于 2021-5-13 18:23:00

{:10_250:}求大佬教学

Uair梦云 发表于 2021-5-13 19:17:41

print之前用字符过滤:
d4=''
for ret in str(d3):
    if ret!=' ':
      d4+=ret

老污龟233 发表于 2021-5-13 19:24:47

Uair梦云 发表于 2021-5-13 19:17
print之前用字符过滤:

马上去试试!谢谢!{:10_254:}

老污龟233 发表于 2021-5-13 19:28:29

Uair梦云 发表于 2021-5-13 19:17
print之前用字符过滤:

能不能麻烦讲解一下代码{:10_254:},为什么直接打印d4,它就已经是字典了,还是有一点看不懂,谢谢!{:10_250:}

阿奇_o 发表于 2021-5-13 20:13:12

多个空格,让你很难受,是吗?……

hrp 发表于 2021-5-13 20:34:38

你这个想法需要纠正啊{:10_250:}
字典打印出来冒号和逗号后面带空格是官方推荐的规范写法
而且字典的主要功能也不是打印出来让人看的,不需要纠结于这个

老污龟233 发表于 2021-5-13 22:52:24

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

{:10_250:}{:10_250:}我被逼无奈{:10_250:}老师叫我们要想办法去掉,对了,还有一个问题,就是我对字典进行了排序,但是最后打印出来的时候,字典里面的顺序还是随机的,我每次打印结果都会改变我要怎么样让它按key值从小到大排列而且输出的时候它不会自己变卦,我感觉我像个呆瓜一样{:10_266:}

hrp 发表于 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))

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

print(d2)

老污龟233 发表于 2021-5-14 07:55:08

hrp 发表于 2021-5-13 23:35


{:10_254:}蟹蟹

老污龟233 发表于 2021-5-14 08:08:04

感谢各位大佬教学

老污龟233 发表于 2021-5-14 17:48:48

hrp 发表于 2021-5-13 23:35


这个方法好像会报错,就是我的字典里面的key有字符串型数据的时候

老污龟233 发表于 2021-5-14 18:00:53

{:10_266:}

hrp 发表于 2021-5-14 19:10:10

老污龟233 发表于 2021-5-14 17:48
这个方法好像会报错,就是我的字典里面的key有字符串型数据的时候

那是因为排序时不同数据类型不能直接比较大小所以报错,如果你想让不同数据类型能比较大小,那就要定一个不同数据类型之间比较大小的规则,比如统一转成字符串或者统一转成浮点型,不能转换类型时又怎么处理等。然后将规则写成函数,将这个函数作为sorted函数的key参数传进去。

老污龟233 发表于 2021-5-14 19:31:26

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

{:10_266:}把key值提取出来放在一个列表里,如果有字符串型又有整型的就再分类一次,然后分别比大小、排序完再合起来这样实现排序{:10_266:}然后再把key传进去{:10_285:}

hrp 发表于 2021-5-14 21:28:19

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

分别排序完怎么合并,谁在前谁在后?

Uair梦云 发表于 2021-5-15 15:52:59

本帖最后由 Uair梦云 于 2021-5-15 16:15 编辑

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

然后就是字典是无序集合,如果你又该回字典那么...天秀{:10_264:}

老污龟233 发表于 2021-5-15 20:05:25

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

{:10_266:}

老污龟233 发表于 2021-5-15 20:54:57

hrp 发表于 2021-5-14 21:28
分别排序完怎么合并,谁在前谁在后?

{:10_266:}老师原话,我实在不懂怎么搞{:10_282:}我感觉我像呆瓜一样{:10_299:}放弃了,用列表我压根排不出来{:10_299:}

hrp 发表于 2021-5-15 21:21:16

老污龟233 发表于 2021-5-15 20:54
老师原话,我实在不懂怎么搞我感觉我像呆瓜一样放弃了,用列表我压根排不 ...

不是不能排,是你要规定排完序后谁在前谁在后{:10_245:},要不然随便也行,但就有可能不符合要求了
页: [1] 2
查看完整版本: 如何去除字典中的空格,并排序输出