小编Dav*_*yer的帖子

XmlSlurper:如何更改动态节点的文本

<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)

它会工作,但正如我之前所说,我不知道运行时的确切名称.

groovy xmlslurper

6
推荐指数
1
解决办法
5389
查看次数

如何在dict中计算相同的值?

我有一个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方式来做到这一点?

python counter dictionary

4
推荐指数
1
解决办法
926
查看次数

如果键在列表中,如何更新嵌套字典中的值?

假设我有一个键列表

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

python dictionary nested python-3.x

4
推荐指数
2
解决办法
714
查看次数

标签 统计

dictionary ×2

python ×2

counter ×1

groovy ×1

nested ×1

python-3.x ×1

xmlslurper ×1