Python 迭代MultiDict中的键和所有值

Python 迭代MultiDict中的键和所有值,python,flask,Python,Flask,我有一本字典 params = ImmutableMultiDict([('dataStore', 'tardis'), ('symbol', '1'), ('symbol', '2')]) 我希望能够遍历字典并获得所有值及其键的列表。但是,当我尝试这样做时,它只获取第一个符号键值对,而忽略另一个 for k in params: print(params.get(k)) 如果您阅读的文档是从中派生的ImmutableMultiDict,您可以看到: 它的行为类似于普通dict,因此

我有一本字典

params = ImmutableMultiDict([('dataStore', 'tardis'), ('symbol', '1'), ('symbol', '2')])
我希望能够遍历字典并获得所有值及其键的列表。但是,当我尝试这样做时,它只获取第一个符号键值对,而忽略另一个

for k in params:
    print(params.get(k))
如果您阅读的文档是从中派生的
ImmutableMultiDict
,您可以看到:

它的行为类似于普通dict,因此,当找到一个键的多个值时,所有dict函数将仅返回第一个值

然而,API包含了一个用于此目的的附加方法。文档中也有一个使用它的示例:

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

它的行为类似于普通dict,因此,当找到一个键的多个值时,所有dict函数将仅返回第一个值

然而,API包含了一个用于此目的的附加方法。文档中也有一个使用它的示例:


如果我理解正确,您希望迭代所有键,包括重复键,对吗?然后您可以使用将
multi
设置为
True
的方法

文件:

项目(多个=假) 返回
(键、值)
对的迭代器

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


如果我误解了你的意思,你想要一个单键所有条目的列表,看看jonrsharpe的答案。

如果我理解正确,你想迭代所有键,包括重复键,对吗?然后您可以使用将
multi
设置为
True
的方法

文件:

项目(多个=假) 返回
(键、值)
对的迭代器

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


如果我误解了你的意思,你想要一个单键所有条目的列表,请看一下jonrsharpe的答案。

你的意思是什么?什么是
不可变的multidict
?这不是标准Python中的一个类。它来自Flask,如果你要使用常规字典,问题仍然存在。如果你要使用常规字典,问题就不存在了,因为如果你没有使用
MultiDict
,就不会有重复的键。好吧,那么你的意思是说,什么是
ImmutableMultiDict
?这不是标准Python中的一个类。它来自Flask,如果使用常规词典,问题仍然成立。如果使用常规词典,问题仍然成立,因为如果不使用
MultiDict
,就不会有重复的键。好吧,这样做很公平,我可以从同一个键中提取两个项,谢谢这项工作我可以从同一个密钥中提取两项,谢谢
>>> d = MultiDict([('a', 'b'), ('a', 'c')])
# ...
>>> d.getlist('a')
['b', 'c']