繁体   English   中英

有关优化此脚本的任何想法? (蟒蛇)

[英]Any ideas on optimizing this script? (Python)

我正在编写一个小脚本来帮助我学习日语假名(平假名/片假名)。 总共有100多个(+ || - )。

基本上,它所做的只是采用英文版本并将其转换为角色。

即。 a ='あ',十进制为12354

到目前为止我所拥有的是:

hiraDict = { "a" : 12354, "i" : 12356 ...}

if __name__ == "__main__":
    if hiraDict.has_key(sys.argv[1]):
      print(unichr(hiraDict[sys.argv[1]]))

有100多个字符,这可行吗?还是有更好的方法来解决这个问题?

无需检查是否存在,只需获取它并在不需要异常时提供默认参数:

# -*- coding: utf-8 -*-
import sys
hiraDict = {'a': 'あ', 'i': 'い', }
print(hiraDict.get(sys.argv[1], None))

...和python 2.x:

# -*- coding: utf-8 -*-
import sys
hiraDict = {'a': u'あ', 'i': u'い', }
print hiraDict.get(sys.argv[1], None)

[编辑]我刚刚注意到你想为许多角色做这件事。 以下内容将允许您打印出一系列以参数形式给出的字符(python 3+):

# -*- coding: utf-8 -*-
import sys
hiraDict = {ord('a'): 'あ', ord('i'): 'い' }
text = " ".join(sys.argv[1:])
print(text.translate(hiraDict))

根据PEP 263放置编码标题,然后直接使用字符:

# -*- coding: utf-8 -*-
hiraDict = {'a': u'あ', 'i': u'い', ...}

来自文档:

对象的has_key(钥匙)

测试字典中是否存在密钥。 不推荐使用has_key()来支持d中的key。

所以重写为

if sys.argv[1] in hiraDict:

不仅100,这也适用于100k字符。

所以不必担心真正优化性能,除非你每秒使用这个例程数千次,你可能不会这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM