我正在構建一個簡單的 python 程式,我試圖根據限制過濾一些回應以運行 for 回圈或 while 回圈。
我想做什么?
當串列達到 5 時,我試圖停止回圈len。它可以是 for 回圈和 while 回圈。
視圖.py
def filter_array(request):
new_array = []
count = 1
quit = False
for m in res.get("blogs"):
for likes in m.get("likes"):
try:
count = 1
if likes == "user_1":
new_array.append(likes)
if count == 5:
quit = True
break
except:
quit = True
break
print(new_array)
return new_array
views.py 中的 json 回應
res = {
"blogs": [
{
"title": "Blog 1",
"description": "Blog description",
"likes": [
"user_1",
"user_2",
]
},
{
"title": "Blog 2",
"description": "Blog description",
"likes": [
"user_4",
"user_5",
]
},
{
"title": "Blog 3",
"description": "Blog description",
"likes": [
"user_3",
]
},
{
"title": "Blog 4",
"description": "Blog description",
"likes": [
"user_3",
"user_4",
"user_5",
]
},
{
"title": "Blog 5",
"description": "Blog description",
"likes": [
"user_4",
"user_5",
]
},
]
}
當我運行上面的代碼時,它會附加陣列中的所有 json 項。但是如果“喜歡”是,我想附加在串列中user_1,并在串列 len 達到 5 時停止回圈。
我已經嘗試了很多小時,但它仍然無法正常作業。
任何幫助將非常感激。
uj5u.com熱心網友回復:
我不確定你到底想做什么,但據我了解,試試這個:
def filter_array(request):
new_array = []
count = 1
flag = False
for m in res.get("blogs"):
for likes in m.get("likes"):
try:
count = 1
if likes == "user_1":
new_array.append(likes)
if count == 5:
flag = True
break
except:
flag = True
break
if flag: # break if flag is True
break
print(new_array)
return new_array
變化
- 使用
flag而不是quit因為quit()是一個內置函式。 - 在外部 for 回圈中添加了標志檢查。
uj5u.com熱心網友回復:
唯一的break突破是一個回圈。因為您有一個嵌套在第一個回圈內的第二個回圈,所以您需要另一個break.
def filter_array(request):
new_array = []
count = 1
for m in res.get("blogs"):
for likes in m.get("likes"):
count = 1
if likes == "user_1":
new_array.append(likes)
if count == 5:
break
if count == 5:
break
print(new_array)
return new_array
uj5u.com熱心網友回復:
IIUC 這就是您所需要的:
res = {
"blogs": [
{
"title": "Blog 1",
"description": "Blog description",
"likes": [
"user_1",
"user_2",
]
},
{
"title": "Blog 2",
"description": "Blog description",
"likes": [
"user_4",
"user_5",
]
},
{
"title": "Blog 3",
"description": "Blog description",
"likes": [
"user_3",
]
},
{
"title": "Blog 4",
"description": "Blog description",
"likes": [
"user_3",
"user_4",
"user_5",
]
},
{
"title": "Blog 5",
"description": "Blog description",
"likes": [
"user_4",
"user_5",
]
},
]
}
new_list = []
for dict_ in res['blogs']:
if 'user_1' in dict_.get('likes', []):
new_list.append(dict_)
if len(new_list) == 5:
break
print(new_list)
輸出:
[{'title': 'Blog 1', 'description': 'Blog description', 'likes': ['user_1', 'user_2']}]
uj5u.com熱心網友回復:
您可以使用切片獲取串列的前五個元素。像這樣的東西:
def filter_array(request):
all_likes = []
for likes in m.get("likes", [])
all_likes.extend(likes)
return all_likes[:5]
不要讓事情變得比你需要的更復雜。例如,這里沒有理由try...except。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/504601.html
