问题描述
我想获得第一个with pm.Model() as mod:
time_in = pm.Data("time_in",df['time'].astype(float))
diet_in = pm.Data("diet_in",dummies)
intercept = pm.normal("intercept",2)
time_effect = pm.normal("time_weight_effect",2,shape=(4,))
diet = pm.Categorical("diet",p=[0.25,0.25,0.25],),observed=diet_in)
sigma = pm.Halfnormal("sigma",2)
sigma_time_effect = pm.Halfnormal("time_sigma_effect",))
weight = pm.normal("weight",mu=intercept + time_effect.dot(diet_in.T)*time_in,sd=sigma + sigma_time_effect.dot(diet_in.T)*time_in,observed=df.weight)
trace = pm.sample(5000,return_inferencedata=True)
标签下面的信息,我想使用jQuery / Cheerio提取信息并将最终结果转换成字典。理想情况下看起来像这样
<option>
一直持续到最后。
const info = {
'5.5':12773,'6':12774,}
解决方法
好吧,如果您想在jQuery中完成所有这些操作,只需使用jQuery选择器(option
就可以获取select
元素的所有$('#attributesize-size_uswomen option')
),然后在其上执行for循环($.each
),轻松填充对象。
所以您的最终代码应该是这样的:
var opts = $('#attributesize-size_uswomen option:not(:first)');
var info = {};
$.each(opts,function(index,opt) {
info[$(opt).text()] = parseInt($(opt).val())
});
console.log(info);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="size_attribute[size]" id="attributesize-size_uswomen" class="size-attribute-select">
<option>Choose Your Size</option>
<option value="12773" source="16004">5.5</option>
<option value="12774" source="16006">6</option>
<option value="12775" source="16008">6.5</option>
<option value="14805" source="16010">7</option>
<option value="14809" source="16012">7.5</option>
<option value="12749" source="16014">8</option>
<option value="14816" source="16016">8.5</option>
<option value="14820" source="16018">9</option>
<option value="14824" source="16020">9.5</option>
<option value="15175" source="16022">10</option>
<option value="15178" source="16024">10.5</option>
<option value="15184" source="16028">11.5</option>
<option value="15187" source="16030">12</option>
</select>
注意::由于循环中的opt
本身是使用jQuery函数的常规对象,因此您需要使用$()
操作数制作一个jQuery对象您可以将其用作常规的NODE对象,并使用诸如text
,textContent
或value
之类的javascript内置属性来获取其属性。
更新
由于在使用does not support :first
伪选择器的cheerio的实现中收到错误,因此可以选择所有选项,然后在对象创建中排除第一个选项。
var opts = $('#attributesize-size_uswomen option');
var info = {};
$.each(opts,opt) {
if (index != 0)
info[$(opt).text()] = parseInt($(opt).val())
});
console.log(info);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="size_attribute[size]" id="attributesize-size_uswomen" class="size-attribute-select">
<option>Choose Your Size</option>
<option value="12773" source="16004">5.5</option>
<option value="12774" source="16006">6</option>
<option value="12775" source="16008">6.5</option>
<option value="14805" source="16010">7</option>
<option value="14809" source="16012">7.5</option>
<option value="12749" source="16014">8</option>
<option value="14816" source="16016">8.5</option>
<option value="14820" source="16018">9</option>
<option value="14824" source="16020">9.5</option>
<option value="15175" source="16022">10</option>
<option value="15178" source="16024">10.5</option>
<option value="15184" source="16028">11.5</option>
<option value="15187" source="16030">12</option>
</select>
或者,如果您想跟上受支持的Cheerio方法,请使用以下方法:
var info = {};
$('#attributesize-size_uswomen').children().slice(1).each(function() {
info[$(this).text()] = parseInt($(this).val())
});
console.log(info);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="size_attribute[size]" id="attributesize-size_uswomen" class="size-attribute-select">
<option>Choose Your Size</option>
<option value="12773" source="16004">5.5</option>
<option value="12774" source="16006">6</option>
<option value="12775" source="16008">6.5</option>
<option value="14805" source="16010">7</option>
<option value="14809" source="16012">7.5</option>
<option value="12749" source="16014">8</option>
<option value="14816" source="16016">8.5</option>
<option value="14820" source="16018">9</option>
<option value="14824" source="16020">9.5</option>
<option value="15175" source="16022">10</option>
<option value="15178" source="16024">10.5</option>
<option value="15184" source="16028">11.5</option>
<option value="15187" source="16030">12</option>
</select>
,
使用$("select option:not(:first)").each