你错过了
draw(...)
在里面
return draw(st.lists(st.fixed_dictionaries(mapping)))
.
但是,这将导致第二个问题-
st.fixed_dictionaries
将键映射到
价值观策略
但是
mapping
这里会有一个
Dict[str, str]
. 也许:
@st.composite
def list_of_dicts_with_keys_matching(draw, keys=st.text(), values=st.text()):
shared_keys = draw(st.lists(keys, min_size=3))
return draw(st.lists(st.dictionaries(st.sampled_from(shared_keys), values)))
更新:上面的代码片段将从共享集中绘制不同的键。对于所有听写的相同键,我会写:
@st.composite
def list_of_dicts_with_keys_matching(draw, keys=st.text(), values=st.text()):
shared_keys = draw(st.sets(keys))
return draw(st.lists(st.fixed_dictionaries(
{k: values for k in shared_keys}
)))