我有一本字典
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)
如果我理解正确的话,您想要迭代所有键,包括重复项,对吧?然后你可以使用set toitems(multi=False)
的方法。multi
True
文档:
\n\n\n项目(多=假)
\n返回
\n(key, value)
对的迭代器。参数:
\nmulti
\xe2\x80\x93 如果设置为True,则返回的迭代器将为每个键的每个值都有一对。否则,它将仅包含每个键的第一个值的对。
如果我误解了您的意思,并且您想要单个键的所有条目的列表,请查看 jonrsharpe 的答案。
\n如果您阅读 的文档MultiDict
,从中ImmutableMultiDict
派生,您可以看到:
它的行为类似于普通的字典,因此当找到一个键的多个值时,所有字典函数只会返回第一个值。
但是,API 包含一个.getlist
用于此目的的附加方法 。文档中也有一个使用示例:
Run Code Online (Sandbox Code Playgroud)>>> d = MultiDict([('a', 'b'), ('a', 'c')]) # ... >>> d.getlist('a') ['b', 'c']