我需要提交一个如下所示的表单数据:
evt: 2001
evt: 1024001
src: mstrWeb.my.fbb.fb.2001
src: mstrWeb.my.fbb.1024001
当我创建一个 python3
dict
时:Dict = {'evt': '2001',
'evt': '1024001',
'src': 'mstrWeb.my.fbb.fb.2001',
'src': 'mstrWeb.my.fbb.1024001'}
它按顺序删除重复的键。我得到:
>>> print (Dict)
{'evt': '1024001', 'src': 'mstrWeb.my.fbb.1024001'}
有什么办法可以让我的 Dict 中的重复键完好无损?
最佳答案
Python dicts 具有唯一键。没有办法解决这个问题。
一种方法可能是在 Python 中创建列表的 defaultdict
,然后在表单代码中使用 jinga for
循环来迭代 dict 的值。
或者,如果您能够发送 json
字符串,this workaround for handling duplicate keys 可能会有所帮助:
给定
data = [
("evt", "2001"),
("evt", "1024001"),
("src", "mstrWeb.my.fbb.fb.2001"),
("src", "mstrWeb.my.fbb.1024001")
]
代码
class Container(dict):
"""Overload the items method to retain duplicate keys."""
def __init__(self, items):
self[""] = ""
self._items = items
def items(self):
return self._items
json.dumps(Container(data))
# '{"evt": "2001", "evt": "1024001", "src": "mstrWeb.my.fbb.fb.2001", "src": "mstrWeb.my.fbb.1024001"}'
关于具有重复键但不同值的python3字典,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49587961/