def nice_labels ( numbers ):
suffixes = ['', 'K', 'M', 'G']
suff_len = []
## figure out which suffix gives us the shortest label length
for i, suff in enumerate( suffixes ):
test = [float(y)/(1000.0**i) for y in numbers]
labels = ["%d%s"% (int(y), suff) for y in test]
## make sure that in the new representation there are no
## degenerate cases
if len(set(labels)) == len(labels):
suff_len.append( (sum(map(len, labels)), i) )
## if we fail to find any satisfactory suffixes, just use defaults
if len(suff_len) == 0:
return map(str, numbers), 0
else:
suff_len.sort()
i = suff_len[0][1]
labels = ["%d%s"% (int(float(y)/(1000.0**i)), suffixes[i]) for y in numbers]
return labels, i
评论列表
文章目录