我需要提交一个如下所示的表单数据:

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/

10-16 22:45