<Messdaten>
<EL_NR>NAYP99</EL_NR>
<EL_NR_Original/>
<Erfassungsdatum>2012-12-12 11:58:54.000</Erfassungsdatum>
<Massnahme>Lot_Hold</Massnahme>
<Anzahl_x0020_R>50</Anzahl_x0020_R>
<FEHLER>OK</FEHLER>
<SEQ>72</SEQ>
</Messdaten>
Run Code Online (Sandbox Code Playgroud)
这是我的XML,我想更改节点'Anzahl_x0020_R'的值.问题是,在运行时我不知道确切的名称.我只知道要更改的节点将以'Anzahl'开头.所以我这样做了:
messdatenXML.childNodes().each { merkmal ->
if (merkmal.name.contains('Anzahl')) {
messdatenXML.merkmal = "my_new_value";
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,它不起作用,价值将保持不变.如果我做:
messdatenXML.Anzahl_x0020_R = "my_new_value"
Run Code Online (Sandbox Code Playgroud)
它会工作,但正如我之前所说,我不知道运行时的确切名称.
我有一个dict
看起来像这样:
"votes": {
"user1": "yes",
"user2": "no",
"user3": "yes",
"user4": "no",
"user5": "maybe",
"user6": "yes"
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是,计算相同的值,以便我知道yes
发生了3次,no
发生了2次,maybe
发生了1次.
我现在做的是:
votes = OrderedDict()
for key, value in vote_dict["votes"].items():
if value in votes:
votes[value] += 1
else:
votes[value] = 1
Run Code Online (Sandbox Code Playgroud)
它工作正常,但肯定有更好的方法来做到这一点.什么是更pythonic方式来做到这一点?
假设我有一个键列表
key_lst = ["key1", "key2", "key3"]
Run Code Online (Sandbox Code Playgroud)
我有一个价值
value = "my_value"
Run Code Online (Sandbox Code Playgroud)
以及my_dict
具有此结构的示例dict
{
"key1": {
"key2": {
"key3": "some_value"
}
},
}
Run Code Online (Sandbox Code Playgroud)
如何通过遍历/循环value
来动态地将变量中的新值分配给?my_dict["key1"]["key2"]["key3"]
key_lst
我不能只说my_dict["key1"]["key2"]["key3"] = value
因为钥匙和钥匙的数量正在改变.我总是在列表中获取密钥(我必须保存值的路径)...
我正在使用Python 3.7