我有两个字典:
d={'doc_1': {'hope': 1, 'court': 2}, 'doc_2': {'hope': 1, 'court': 1}, 'doc_3': {'hope': 1, 'mention': 1}}
和
count={'doc_1': 6, 'doc_2': 5, 'doc_3': 12}
所有我想基于两个字典的相同键将字典d
的嵌套字典的值除以字典count
的值。
预期输出:-
new={{'doc_1': {'hope': 0.16666666, 'court': 0.3333333}, 'doc_2': {'hope': 0.2, 'court': 0.2}, 'doc_3': {'hope': 0.0833333, 'mention': 0.0833333}}
。
我到目前为止所做的:
new={}
for k,v in d.items():
for p,q in count.items():
for w,r in v.items():
if k==p:
ratio=r/q
new[k][w]=ratio
那给了我一个错误!
答案 0 :(得分:2)
您可以使用dict理解:
from pprint import pprint
d={'doc_1': {'hope': 1, 'court': 2}, 'doc_2': {'hope': 1, 'court': 1}, 'doc_3': {'hope': 1, 'mention': 1}}
count={'doc_1': 6, 'doc_2': 5, 'doc_3': 12}
new_d = {k:{kk:vv/count[k] for kk, vv in v.items()} for k, v in d.items()}
pprint(new_d)
打印:
{'doc_1': {'court': 0.3333333333333333, 'hope': 0.16666666666666666},
'doc_2': {'court': 0.2, 'hope': 0.2},
'doc_3': {'hope': 0.08333333333333333, 'mention': 0.08333333333333333}}
答案 1 :(得分:1)
关于您的代码,由于在import io
import base64
...
app.layout = html.Div(children=[
...,
html.Img(id='example') # img element
])
@app.callback(
dash.dependencies.Output('example', 'src'), # src attribute
[dash.dependencies.Input('n_points', 'value')]
)
def update_figure(n_points):
#create some matplotlib graph
x = np.random.rand(n_points)
y = np.random.rand(n_points)
buf = io.BytesIO() # in-memory files
plt.savefig(buf, format = "png") # save to the above file object
data = base64.b64encode(buf.getbuffer()).decode("utf8") # encode to html elements
plt.close()
return "data:image/png;base64,{}".format(data)
不存在的情况下试图设置new[k][w]
,因此会产生错误。要解决此问题,您应该将new[k]
初始化为一个空字典,然后填写它:
new[k]
输出
new={}
for k,v in d.items():
new[k] = {}
for p,q in count.items():
for w,r in v.items():
if k==p:
ratio=r/q
new[k][w]=ratio