迭代 MultiDict 中的键和所有值

mog*_*oli 8 python flask

我有一本字典

params = ImmutableMultiDict([('dataStore', 'tardis'), ('symbol', '1'), ('symbol', '2')])
Run Code Online (Sandbox Code Playgroud)

我希望能够迭代字典并获取所有值及其键的列表。但是,当我尝试这样做时,它只获取第一个符号键值对并忽略另一个。

for k in params:
    print(params.get(k))
Run Code Online (Sandbox Code Playgroud)

Leo*_*eoE 6

如果我理解正确的话,您想要迭代所有键,包括重复项,对吧?然后你可以使用set toitems(multi=False)的方法。multiTrue

\n

文档:

\n
\n

项目(=

\n

返回(key, value)对的迭代器。

\n

参数multi\xe2\x80\x93 如果设置为True,则返回的迭代器将为每个键的每个值都有一对。否则,它将仅包含每个键的第一个值的对。

\n
\n

如果我误解了您的意思,并且您想要单个键的所有条目的列表,请查看 jonrsharpe 的答案。

\n


jon*_*rpe 5

如果您阅读 的文档MultiDict,从中ImmutableMultiDict派生,您可以看到:

它的行为类似于普通的字典,因此当找到一个键的多个值时,所有字典函数只会返回第一个值。

但是,API 包含一个.getlist用于此目的的附加方法 。文档中也有一个使用示例:

>>> d = MultiDict([('a', 'b'), ('a', 'c')])
# ...
>>> d.getlist('a')
['b', 'c']
Run Code Online (Sandbox Code Playgroud)