[英]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.