python - 将包含分数的字典转换为字符串
问题描述
我想将字典转换为字符串列表。虽然我的实际代码要长得多,但 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()
。
解决方案
你不能:一旦你在定义的行上点击“return” mydict
,Python 解释器就会计算所有的表达式,你就失去了原来的形式。您无法0/255
从0/3
或1/2
从中分辨出来3/6
。如果你想保留分子和分母,那么我建议你使用Fraction
包。
推荐阅读
- generics - Refator 代码,用 Kotlin 编写成更具功能性的方式
- php - 我可以在非 Symfony 项目中使用 Symfony 的 Route Annotation
- terraform - 如何获得当前导演的相对路径到任意父目录?
- python - 注释 django 字段
- highcharts - HighCharts - 不要在最大值上裁剪系列线
- r - 用 R 中最近时间点的值填充变量中的缺失值
- python - 将复杂代码转换为列表理解失败
- ios - 有没有办法暂停背景音乐(例如Spotify)然后播放声音文件,然后在ios应用程序中再次播放背景音乐?
- excel - VBA不会结束If函数
- node.js - 如何使用 gridfs-stream 将图像上传到 GridFS?