Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python字典排序_Python_Python 3.x - Fatal编程技术网

Python字典排序

Python字典排序,python,python-3.x,Python,Python 3.x,我正在尝试构建一个程序,以特定的方式对字典值进行排序 我想做的是- 如果我有一本字典: 姓名1:1 姓名2:2 姓名3:3 姓名4:4 姓名5:5 姓名6:6 姓名7:7 姓名8:8 我希望它是由最高与最低,然后第二高与第二低,以此类推 1,8,2,7,3,6,4,5(A,Z,B,Y) 我试图排序的数据是字典形式的,只需要按该顺序打印,因为它只是一次性使用,不需要存储 我希望这是足够的信息 注:我是python新手,因此如果解释能尽可能简单,那就太好了,我也在使用python 3.6版,您可

我正在尝试构建一个程序,以特定的方式对字典值进行排序

我想做的是-

如果我有一本字典:

  • 姓名1:1
  • 姓名2:2
  • 姓名3:3
  • 姓名4:4
  • 姓名5:5
  • 姓名6:6
  • 姓名7:7
  • 姓名8:8
我希望它是由最高与最低,然后第二高与第二低,以此类推

1,8,2,7,3,6,4,5(A,Z,B,Y)

我试图排序的数据是字典形式的,只需要按该顺序打印,因为它只是一次性使用,不需要存储

我希望这是足够的信息


注:我是python新手,因此如果解释能尽可能简单,那就太好了,我也在使用python 3.6版,您可以用反向排序值压缩排序值并打印对

d = {'name1': 1,
     'name2': 2,
     'name3': 3,
     'name4': 4,
     'name5': 5,
     'name6': 6,
     'name7': 7,
     'name8': 8}

v = sorted(d.values())
for x,y in zip(v[:len(v)//2], v[::-1]):
    print('{}, {}'.format(x,y), end=', ')
# prints:
1, 8, 2, 7, 3, 6, 4, 5,
要根据值的顺序打印键,请执行以下操作:

v = sorted(d.items(), key=lambda x: x[-1])
for x, y in zip(v[:len(v)//2], v[::-1]):
    print('{}, {}'.format(x[0], y[0]), end=', ')

要打印键还是要打印值?(
name1
1
)?试着发一篇帖子,告诉我们你做了什么。@Ethak抱歉,我是这个网站的新手,对我正在做的事情不太了解。我以前试过一些东西,但没有一种接近成功。不过谢谢你的建议。你也可以用一个
reduce
来替换
for
循环,对吗?你可以,但我不喜欢在lambda函数或列表理解中放入print语句。好吧,它会返回一个列表,你可以稍后打印。。。但我明白你的意思——OP只是想打印这个。这非常有效,谢谢,但我不知道这是否可行,但有没有一种方法可以按值排序,但打印键?比如名字1,名字8,名字2,名字7,。。。