python - 在 python 中将微秒增量转换为各自转换的最佳方法?

标签 python

我目前有一个预定义的字典(忽略字母)。不过,我希望转换更稳健。假设输入 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/

相关文章:

python - Django 如何授予保留端口号?

python - 如何使用 Popen 同时运行多个具有 while(1) 循环的程序

python - 如何同时打开 openCV 窗口和 tkinter 窗口?

java - 我可以使用哪些技术来帮助更好地理解离散数学中的概念是如何在编程中使用的?

python - 为多个类创建图像数据集

python - 如何将 JSON 转换为更易于阅读的内容?

python - 使用 Airflow hive 运算符并输出到文本文件

python - 高效地生成一个字符串所有可能子串的列表

python - Pandas 跑分专栏

python - igraph 不能使用 GLPK