如何以字节格式查找列表长度?

时间:2017-11-01 23:18:42

标签: python list byte

我有一个数据变量,其中包含list dicts lists bytes我从api中获取的In: data Out: b'[{"dict1_list1":[1,2,3],"dict1_list2":[4,5,6]},{"dict2_list1":[1,2,3],"dict2_list2":[4,5,6]}]' ,格式为In: data Out: b'[{"onlydict_list1":[1,2,3],"onlydict_list2":[4,5,6]}]' 。该列表的长度可变。

byte

我想确定列表中只有一个dict(即api已用完数据)

In: len(data)
Out: 53  # Not '1' as I would like

但由于数据格式为b'[....]',我无法返回列表的长度。

// ----- GetCChooseItemView() -- -Search the first associated CView in  INACTIVE Views too ! ------ 
CView* CMyDoc::GetCChooseItemView(void)
{
  CRuntimeClass* prt = RUNTIME_CLASS(CChooseItemView);
  CView* pView = NULL;

  // Continue search in inactive View by T(o)m

  POSITION pos = GetFirstViewPosition();
  while (pos != NULL)
  {
    pView = GetNextView(pos);
    if (pView->GetRuntimeClass() == prt)
    {
        if (pView->IsKindOf(RUNTIME_CLASS(CChooseItemView)))
            break;
    }
    pView = NULL;       // not valid vie
  }

  return static_cast<CChooseItemView*>(pView);
}

如何在void CMainFrame::SelectView(UINT ViewID) { : (code as before) : // Get a pointer to the current view CView* pCurrentView = GetActiveView(); // Get a pointer to the current view CView* pCurrentView = GetActiveView(); if (pCurrentView == NULL { CMyDoc* pDoc = static_cast<CMyDoc*>(GetActiveDocument()); if (pDoc) { pCurrentView = pDoc->GetChhoseItemView(); if (pCurrentView == NULL) mpCurrentView = pDoc->GetCItemInformationView() // let as exercise for the OP if (pCurrentView == NULL { DebugBreak(); // Errror No View found.. } } : (code as befeore) : }

中识别列表的长度

2 个答案:

答案 0 :(得分:1)

如果r是响应,则尝试调用r.json()方法。它将转换为列表,然后您可以找到它的长度。您还可以通过导入json(import json)来使用json.loads(r.text)。

答案 1 :(得分:1)

你获得了bytes对象的长度,这显然是data的类型,不是它对应的JSON对象的Python版本。

一种简单的方法是首先使用json.loads()将数据转换为等效于字节字符串的Python对象。这就是我的意思:

import json

data = (b'[{"dict1_list1":[1,2,3],"dict1_list2":[4,5,6]},'
         b'{"dict2_list1":[1,2,3],"dict2_list2":[4,5,6]}]')

print(len(json.loads(data)))  # -> 2