现有 a 变量,
a = """ <xml> <fee_type></fee_type> <coupon_fee></coupon_fee> <coupon_fee></coupon_fee> </xml> """
因为“coupoen_fee”重复了,通过 xmltodict 转的 dict 格式为 {'fee_type': 'CNY', 'coupon_fee': ['10', '100']}
期待的格式是 {'fee_type': 'CNY', 'coupon_fee': '10', 'coupon_fee': '100'}
目的是得到 coupon_fee=10&coupon_fee=100&fee_type=CNY
有啥好的办法吗?
1
sujin190 2020-07-10 09:37:47 +08:00
dict 的 key 啥时候能重复了,你这是犯傻了还是想要逆天无视数据结构规则了
|
2
sikariba 2020-07-10 09:47:39 +08:00
dict 的 key 是 hash 的,不能重复,你只能从 dict 序列化到 query string 的这一部分想办法
|
3
cassidyhere 2020-07-10 09:52:05 +08:00
你可以用 collections.ChainMap,或者参考 flask 里的 MultiDict:
>>> d = MultiDict([('a', 'b'), ('a', 'c')]) >>> d MultiDict([('a', 'b'), ('a', 'c')]) >>> d['a'] 'b' >>> d.getlist('a') ['b', 'c'] |
4
lake325 2020-07-10 09:53:24 +08:00
为何要 coupon_fee=10&coupon_fee=100&fee_type=CNY ? 这种两个重复的 key 看着不另类吗?
|
5
fonlan 2020-07-10 09:55:50 +08:00
或者你就手动写解析,转成{'fee_type': 'CNY', 'coupon_fee': ['10', '100']}这样,既然是同名的 key 不如把值放入一个 list
|
6
bnm965321 2020-07-10 10:34:43 +08:00
@lake325 这种格式是 query string 规范,是正常的。但是可以用 urllib 直接从上面的 dict 转换
|
7
maobukui OP [解决了]
抱歉可能我表述不太清楚,再简单分享下。 [诉求] 现有 xml 字符串 a = """ <xml> <fee_type></fee_type> <coupon_fee></coupon_fee> <coupon_fee></coupon_fee> </xml> """ 期望得到 coupon_fee=10&coupon_fee=100&fee_type=CNY [实现方式] 仍然 xml → dict (此时值有列表) 通过 for 循环判定值为列表情况,便利后,通过 key + "= " + value 拼接了字符串。 感谢。 |
10
wdf86 2020-07-10 11:20:36 +08:00
xmltodcit 这个库可以了解下
|