簡體   English   中英

只能訪問Python unicode字典中列表的最后一個元素

[英]Able to access only last element of list in Python unicode dictionary

我的Python unicode字典看起來像這樣:

`<QueryDict: {u'csrfmiddlewaretoken':[u'oacUfIz5q2tPtmSoqCQi7tBDn2ejpt4x9ZiFeLKeIOyB2CHvAoJqbe1cHNZJSObP'], u'Date and Events[]': [u'2000-09-09', u'bday', u'second']}>`

當我嘗試使用鍵'Date and Events []'訪問元素時,我只獲得列表的最后一個元素。 知道為什么會這樣嗎?

使用.getlist(key)

>>> qd = QueryDict('a=1&a=2')            # a simple QueryDict
>>> qd
<QueryDict: {'a': ['1', '2']}>
>>> qd['a']                              # example of the problem (last item only)
'2'
>>> qd.get('a')                          # problem not solved by .get()
'2'
>>> qd.getlist('a')                      # getlist() solves it!
['1', '2']

細節:

你的字典是django.http.QueryDict類型,它是“一個類似字典的類,用於處理同一個鍵的多個值。” 不幸的是, QueryDict.__getitem__() “僅返回最后一個值”。 這意味着對someQueryDict[key]調用將不會返回列表,即使存在與該鍵相關聯的多個值也是如此。

解決方案是使用QueryDict.getlist(key, default=None)

以Python列表的形式返回帶有請求鍵的數據。 如果密鑰不存在且未提供默認值,則返回空列表。 除非提供的默認值不是列表,否則保證返回某種列表。

Dict中的__getitem __()按原樣返回項目。 無論是int,float,string還是list。 但是QueryDict的情況並非如此。 您必須使用QueryDict.getlist(key)或將其轉換為Dict才能完成工作。 我們假設'qd'是您要從中提取項目的QueryDict。

    date = QueryDict.getlist('Date')
    events = QueryDict.getlist('Events[]')

如果您希望將QueryDict轉換為dict,那么您可以執行類似的操作來完成任務。

    myDict = dict(qd.iterlists())
    date = myDict['Date']
    events = myDict['Events[]']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM