如下一段Python代码,将一个str转化为float:
from functools import reduce
def s2f(n):
def str(n):
return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9,'.': 0}[n]
def fol(x,y):
return (x*10+y)
return reduce(fol,map(str,n))/1000
print('str2float(\'123.456\') =', s2f('123.456'))
结果输出1230456.问题是,{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9,'.': 0}[n],n='123.456',这个dict中为什么key值能够分别对应1,2,3等等,而不是key=123.456?
而且,直接输入:
print ({'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9,'.': 0}['123.456'])
会报错,为什么呢?
ä½ å¯è½æ²¡çæ¸ é®é¢ãæ对è¿ç¨åç»æ没æçé®ãåªæ¯ï¼['123.456']ä¸æ¯ä¸ä¸ªåªæä¸ä¸ªå ç´ çliståï¼dict{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9,'.': 0}æä¹ä¼è®¤ä¸ºè¿ä¸ªlistå æ¬äº1,2,3ï¼ãï¼4,5,6è¿7个å ç´ ï¼ä»èè¿åvalueï¼
追çå符串å½æå表ãå ç»æ¶ï¼æ¯ä¸ªå符å½æå ç´
ä¸æ¯ä¼ å ¥ç['123.456']