python confusion:dict.pop

Fre*_*mas 2 python django

我真的很困惑为什么Python以特定的方式行事.

这是一个例子:我有一个名为"copy"的字典.(它是django中HttpRequest.POST的副本.)

这是一个调试会话(添加了行号):

1 (Pdb) copy
2 <QueryDict: {u'text': [u'test'], u'otherId': [u'60002'], u'cmd': [u'cA'], u'id':
3  [u'15']}>
4 (Pdb) copy['text']
5  u'test'
6 (Pdb) copy.pop('text')
7  [u'test']
Run Code Online (Sandbox Code Playgroud)

我的问题是在字典中它看起来像值都是列表(它们来自django那种方式.)当我访问第4行中的元素时,我将其作为值而不是列表,但是当我访问它时pop我再次把它作为列表.

我真的很困惑.有人可以帮忙吗?

Kat*_*iel 5

看一看在文档QueryDict秒.简短的回答是它是一个子类,dict它修改了获取项目的方式,因此copy['text']它将返回与之关联的值列表中的最后一个'text'.由于它们没有被覆盖pop,它将返回整个列表.

您可以使用.getlist获取与特定值关联的列表:

copy['text']
>>> u'test'

copy.getlist('text')
>>> [u'test']
Run Code Online (Sandbox Code Playgroud)

原因是某些HTML元素将为单个键返回多个值.