强迫症已被 python 的 dictionary 逼疯

2016-01-23 00:49:06 +08:00
 Cassandra

本来不想上 V2 来问的啊,可是一想到这问题我就要疯啊啊啊啊
强迫症已撞死在墙上{>~<}
有没有可能 按照我输入的顺序 print 一个 dictionary 的 key

例如说,我现在有 有一个 dictonary 输入为
studentGrades = {'Steven':90, 'Chole':70,'Bob':100}
print(studentGrades)

如果不作任何改变,这个 print 的 result 在某种程度上是 random
可是我想按照我输入的顺序来了,也就是 output 从 Steven 到 Chole 到 Bob

我现在只能做到按照字母顺序来排列,也就是 Bob, Chole, Steven

我试过什么 orderedDict 什么的,但是不 work ,我也不知道是不是我写错了

不改过来总觉得作业没有写完,都不想交了%>_<%

求大家帮帮忙,求轻喷
顺便说一句是 python3.5

8025 次点击
所在节点    Python
84 条回复
slfmessi
2016-01-23 17:44:36 +08:00
@kqz901002 [PEP8]( https://www.python.org/dev/peps/pep-0008/#naming-conventions) 中有 Python 的命名约定,虽然我个人也更喜欢驼峰一点
slfmessi
2016-01-23 17:47:01 +08:00
@slfmessi 失败了= =
kqz901002
2016-01-23 17:52:08 +08:00
@slfmessi 我就是说的这个文档啊,这个文档没有说不建议驼峰命名啊, OrderedDict 本身就是驼峰命名, studentGrades 是首字母小写的驼峰命名法, pep8 的建议是有统一的,易读的命名规则
fy
2016-01-23 18:04:05 +08:00
@kqz901002 大哥 下划线命名是变量名和函数名啊, OrderedDict 是驼峰没错,但这是类名啊!

我之前也说了公司或者老师要求的编码规范最大。除此之外, Python 大多数库通行的规则就是小写下划线。当然有些著名的库不是,我们都知道那些库很多年头了或者本身就是从 java 复刻的。

通行不通行这也不是我钦定的,我举个例子

def helloWorld():
pass

在 PyCharm 下:
Function name should be lowercase

在 Vim 插件 ycm 下(用的是 jedi 还是 pylint 我忘了)
[invalid-name] Invalid function name "helloWorld"

我再重复一次,当前要求的编码规范最大。而 Python 最通行的函数名变量名命名规则是小写下划线。
Executable
2016-01-23 18:35:35 +08:00
@Cassandra 讲真啊,我北航的同学,非计算机类,学 python ,还要做 0-1 背包
Cassandra
2016-01-23 22:10:36 +08:00
@yelite 哇塞还有人知道呢
ethego
2016-01-23 22:19:05 +08:00
@kqz901002 建议你再好好读读 pep8 ,另外 OrderedDict 是类
Cassandra
2016-01-23 22:19:24 +08:00
@chuan 恩恩对啊,因为写的时候是按照顺序来的,所以 print 出来是无序的看的我很烦恼
Cassandra
2016-01-23 22:25:12 +08:00
@tairan2006
@ethego
@kqz901002
@fy
@BXIA


看你们争论命名方式很有意思。但是 python 也只是建议下划线的命名方式,并不是说驼峰就一定不可以。尽管统一的命名方式在团队合作 或者与别人共享代码的时候读起来比较方便,但是个人也有个人的习惯,我也不觉得非要强制成一个样。

PS :我觉得下划线破坏了单词的美感
Cassandra
2016-01-23 22:26:07 +08:00
@callofmx 我主要觉得 list 调用数据有点麻烦,懒得要死
ethego
2016-01-23 23:37:18 +08:00
@Cassandra 自己写给自己看就算了,但是一旦要发布出去供别人阅读、或者进行团队协作,会给其他人造成很大的困扰,因为大家默认把驼峰看成类名。如果在公司这么写,我想同事对这个人的印象会不太好,因为无形之间增加了很多沟通的成本。很多时候, pep8 的“建议”就是强制性的。
ethego
2016-01-23 23:40:08 +08:00
@Cassandra 一般公司或者组织也会有编码规范,通常就是 pep8 ,代码很大程度上其实不是拿来执行的,是供人阅读的。
Cassandra
2016-01-24 01:10:42 +08:00
@ethego 我只是不愿意方便别人难为自己,这件事情是没有道理的
ethego
2016-01-24 01:20:13 +08:00
@Cassandra 可以默默地祝福自己永远不需要商业编程。。
ethego
2016-01-24 01:22:53 +08:00
@Cassandra 那你写 html 怎么办?标签只允许-连接,驼峰是无效的因为不区分大小写
Cassandra
2016-01-24 01:44:59 +08:00
@ethego 只能用的就用只能的呗, html 写的很习惯啊。我反正又不是电脑专业,学这些只是好玩
20015jjw
2016-01-24 02:08:45 +08:00
@Cassandra 不是唉 我在当助教 我们这课才开始一周 dict 要 4-5 周这样
20015jjw
2016-01-24 02:12:24 +08:00
@SharkIng 就是觉得开学好早啊这么快教到 dict 啦
Cassandra
2016-01-24 03:34:19 +08:00
@20015jjw 我们要步入第三周了。
kqz901002
2016-01-24 12:19:04 +08:00
@fy
===
@Cassandra
这个姿势: student_grades = OrderedDict((('Steven',90), ('Chole',70),('Bob', 100)))

另外 Python 不用驼峰法则!命名是中间隔下划线的,函数和类方法都是这样的!
===
这是你的原话

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/252765

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX