首页 > 解决方案 > 将包含分数的字典转换为字符串

问题描述

我想将字典转换为字符串列表。虽然我的实际代码要长得多,但 MWE 是:

>>> import json
>>> mydict = {'c1': (84/255, 0/255, 0/255), 'c2': (15/255, 123/255, 175/255)}
>>> json.dumps(mydict)

输出是:

'{"c1": [0.32941176470588235, 0.0, 0.0], "c2": [0.058823529411764705, 0.4823529411764706, 0.6862745098039216]}'

如果我尝试这个fractions包,似乎我可以将分数本身转换成合适的东西,但它不适用于字典或数组:

from fractions import Fraction

x = Fraction(84/255).limit_denominator()
print(x)

y = Fraction(np.array([84/255, 0/255])).limit_denominator()
print(y)

z = Fraction(mydict).limit_denominator()
print(z)

我想提取所有数值(同时将它们保留为分数)并将它们放在一个列表中,例如:

mylist = ['(84/255, 0/255, 0/255)', '(15/255, 123/255, 175/255)']

仅供参考,我不能在我的实际代码(不是这个 MWE)中将元组保存为字符串,因为我不允许更改特定格式。所以有必要mydict直接转换,例如。喜欢str(Fraction({'c1': (84/255, 0/255, 0/255), 'c2': (15/255, 123/255, 175/255)}).limit_denominator()

标签: pythonlistdictionary

解决方案


你不能:一旦你在定义的行上点击“return” mydict,Python 解释器就会计算所有的表达式,你就失去了原来的形式。您无法0/2550/31/2从中分辨出来3/6。如果你想保留分子和分母,那么我建议你使用Fraction包。


推荐阅读