我目前有一个预定义的字典(忽略字母)。不过,我希望转换更稳健。假设输入 33000000 微秒并知道转换为 33 秒。然后,一分钟内但一小时内的任何微秒输入都显示为分钟等。是否可以在不需要这个预定义字典的情况下进行编码?最好是接受微秒输入然后输出正确转换的函数。
'A100.txt' :'100 us',
'B500.txt' :'500 us',
'C1000.txt' :'1 ms',
'D4000.txt' :'4 ms',
'E5000.txt' :'10 ms',
'F30000.txt' :'30 ms',
'G100000.txt' :'100 ms',
'H300000.txt' :'300 ms',
'I1000000.txt' :'1 sec',
'J3000000.txt' :'3 secs',
'K10000000.txt' :'10 secs',
'L30000000.txt' :'30 secs',
'M60000000.txt' :'1 min',
'N180000000.txt' :'3 mins',
'O600000000.txt' :'10 mins',
'P1800000000.txt' :'30 mins',
'Q3600000000.txt' :'1 hr',
'R7200000000.txt' :'2 hrs',
'S14400000000.txt' :'4 hrs'}
最佳答案
这允许您以相对自然的方式为严格升序的单位堆栈添加转化。它比大块的 ifs 更通用一些。
units = [[1000, 'us'],
[1000, 'ms'],
[60, 's'],
[60, 'min'],
[24, 'h'],
[365, 'day'],
[None, 'year']]
def convert(quantity):
divisor = 1
for factor, name in units:
if factor is None or quantity < divisor*factor:
return "{} {}".format(quantity/divisor, name)
divisor *= factor
关于python - 在 python 中将微秒增量转换为各自转换的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31251377/