我真的很困惑为什么 Python 以特定的方式运行。
这是一个例子:我有一本名为“copy”的字典。 (它是 django 中 HttpRequest.POST 的副本。)
这是一个调试 session (添加了行号):
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 访问它,我再次将其作为列表获取。
我对此感到非常困惑。有人可以帮忙吗?
最佳答案
看看 docs对于QueryDict
。简短的回答是它是 dict
的子类,它修改了获取项目的方式,因此 copy['text']
将返回最后 与'text'
关联的值列表中的值。由于它们没有重写 pop
,因此它将返回整个列表。
您可以使用.getlist
获取与特定值关联的列表:
copy['text']
>>> u'test'
copy.getlist('text')
>>> [u'test']
原因是某些 HTML 元素将为单个键返回多个值。
关于python混淆: dict. pop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3481131/