Python noob here。一直盯着這個日子,試圖讓它工作。Python覆蓋字典而不是追加
下面的代碼:
#!/usr/bin/env python
import requests
from requests.auth import HTTPBasicAuth
import json
import sys
import getpass
import itertools
password = 'mypassword'
def getusers():
count = 0
while (count < 1000):
url = "https://blahblah/rest/api/latest/blah/member?groupname=some-group&startAt={0}&maxResults=100".format(count)
request = requests.get(url,auth=HTTPBasicAuth('username', password.format(password)), verify=True)
data = json.loads(request.content)
items = data['values']
global active
active = []
inactive = []
for i in range(len(items)):
user = items[i]
if user['active']:
active.append(user)
#active.append(user.copy())
else:
inactive.append(user.copy())
count += 101
getusers()
print active
計數循環:該API將僅返回每獲得200個結果。這是計數和循環的原因。我正在嘗試創建一個包含1000多個條目的字典。
startAt =:從API記錄位置「0」開始的默認值。計數將位置增加到101,然後是202,然後是303 ......直到達到位置1,000。所以,記錄從0-101開始,並且應該追加記錄0-202,然後是0-303,然後是0-404,依此類推。
如果用戶['active']:'active'是每個用戶返回的密鑰之一。如果該鍵=真,發送到活動字典,否則發送到無效字典。
當前行爲: 當我打印我的「主動」字典時,我得到最後一組用戶,而不是總共1,000個用戶。用戶的那最後一組在909位置和結束位置開始,1000
預期的行爲: 當我打印我的「活躍」快譯通,它應該包含近1000個用戶有各種鍵/值。活躍的用戶字典應該從位置0開始,並且在位置=結束活躍用戶的數量。
這是取之於JSON有效載荷返回例如:
u'emailAddress': u'blahblah.com', u'key': u'bblah', u'active': True, u'timeZone': u'America/Los_Angeles'}, {u'displayName': u'Blah, Blah', u'name': u'bblah', u'self': u'https://blah.com'...]
您每次重新分配'active'空列表您while循環中:'有效= []' –
我不知道這是標準的方法,但我的戰術運用很多是嘗試:my_list.append(new_item),除了:my_list = new_item。這使得不需要將my_list初始化爲空列表;如果my_list不存在,則try塊將失敗,並且將執行except塊,將列表初始化爲第一項。你當然必須確保沒有你不想要的已經創建的my_list。 – Acccumulation