python confusion:dict.pop

时间:2010-08-13 22:36:44

标签: 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']

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

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

1 个答案:

答案 0 :(得分:5)

查看QueryDict的{​​{3}}。简短的回答是它是dict的子类,它修改了获取项目的方式,因此copy['text']将返回与{{{{}}相关联的值列表中的 last 值。 1}}。由于它们没有覆盖'text',它将返回整个列表。

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

pop

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