我有两个字典:
dict_1 = {'A': ['red', 'red', 'blue'],
'B': ['red', 'green'],
'C': ['blue', 'green'], ....}
dict_2 = {'A': Counter({'red': 2, 'blue': 1}),
'B': Counter({'red': 1, 'green': 1}),
'C': Counter({'blue': 1, 'green': 1}), ....}
我需要在它们之间做一些简单的划分,然后成对绘制它们。期望的结果是这样的或可以做除法的任何事情:
fraction = {'A': [2/3, 1/3],
'B': [1/2, 1/2],
'C': [1/2, 1/2], ....}
现在,我只能将第一位数字除,任何建议将不胜感激! 这是我的代码:
fraction = { key: [v/len(colorz)] for namez, colorz in dict_1.items()
for name, color in dict_2.items()
for k, v in color.items() }
答案 0 :(得分:4)
.count
是pretty fast,所以我不将dict_2
与Counter
一起使用,但是可以使用它。
fraction = {k: [l.count(e)/len(l) for e in set(l)] for k, l in dict_1.items()}
但是这意味着简短,不一定有效。如果需要更快,则可以执行其他操作。如果您希望将它们作为字符串,则
fraction = {k: [f'{e.count(l)}/{len(l)}' for e in set(l)] for k, l in dict_1.items()}
,如果您希望将它们作为减少分数的字符串使用,请使用fraction
模块
答案 1 :(得分:2)
使用分数的版本。
from fractions import Fraction
{k: [Fraction(v[i], sum(v.values())) for i in v] for k, v in dict_2.items()}