我正在编写一个小脚本来帮助我学习日语假名(平假名/片假名)。总共有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多个字符,这可行吗?还是有更好的方法来解决这个问题?
答案 0 :(得分:5)
如果您不想要例外,则无需检查是否存在,只需获取它并提供默认参数:
# -*- 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)
[edit]我刚注意到你想为很多角色做这件事。以下内容将允许您打印出一系列作为参数给出的字符(python 3 +):
# -*- coding: utf-8 -*-
import sys
hiraDict = {ord('a'): 'あ', ord('i'): 'い' }
text = " ".join(sys.argv[1:])
print(text.translate(hiraDict))
答案 1 :(得分:3)
根据PEP 263放置编码标题,然后直接使用字符:
# -*- coding: utf-8 -*-
hiraDict = {'a': u'あ', 'i': u'い', ...}
答案 2 :(得分:1)
来自文档:
对象的has_key(key)的
测试字典中是否存在密钥。 has_key()是 在d。
中赞成使用key
重写为
if sys.argv[1] in hiraDict:
答案 3 :(得分:1)
不仅100,这也适用于100k字符。
所以不必担心真正优化性能,除非你每秒数千次使用这个例程,你可能不会这样做。