#python #list #dictionary #extend
#python #Список #словарь #расширить
Вопрос:
Итак, у меня есть этот фрагмент кода для генерации некоторого ответа для ответа api.
@app.route("/api/topFour",methods = ['POST'])
def top():
parser = request.get_json()
user_id = parser["user_id"]
item = {}
answer = []
parameters = {"user_id":user_id,"start_date":"2018-01-01","last_date":"2019-12-31"}
response = requests.post("https://my_doamin/app/api/get-customer-list",params= parameters)
data = response.json()
if data["status"] == "1":
customer_list = data["customerList"]
print(customer_list)
for i in customer_list:
item["customer_id"]= i["id"]
item["customer_name"]=i["company_name"]
print(item)
answer.extend(item)
return jsonify({"user_id":user_id,"top4user": answer})
итак, в моем cmd: это вывод для списка клиентов:
[{'id': 422689, 'full_name': 'jeff bezos', 'company_name': 'Amazon inc', 'create_date': '2019-03-08 17:38:48'}, {'id': 423053, 'full_name': 'akshit', 'company_name': 'HP Globalsoft pvt ltd', 'create_date': '2019-03-09 12:31:42'}, {'id': 422666, 'full_name': 'bill gates', 'company_name': 'Microsoft C
orporation', 'create_date': '2019-03-08 17:16:26'}, {'id': 423034, 'full_name': 'mukesh', 'company_name': 'Reliance Industries Limited', 'create_date': '2019-03-09 12:26:15'}]
и это для печати (элемент):
{'customer_id': 422689, 'customer_name': 'Amazon inc'}
{'customer_id': 423053, 'customer_name': 'HP Globalsoft pvt ltd'}
{'customer_id': 422666, 'customer_name': 'Microsoft Corporation'}
{'customer_id': 423034, 'customer_name': 'Reliance Industries Limited'}
Но когда я расширяю это в список, он выдает этот ответ:
{
"top4user": [
"customer_id",
"customer_name",
"customer_id",
"customer_name",
"customer_id",
"customer_name",
"customer_id",
"customer_name"
],
"user_id": 6052
}
Ниже приведен результат, который я ожидал:
[
{'customer_id': 423034, 'customer_name': 'Reliance Industries Limited'},
{'customer_id': 423034, 'customer_name': 'Reliance Industries Limited'},
{'customer_id': 423034, 'customer_name': 'Reliance Industries Limited'},
{'customer_id': 423034, 'customer_name': 'Reliance Industries Limited'}
]
Это должен быть список словарей. Я пробовал с помощью append.
редактировать: Это было время, когда я был новичком и был разочарован. Пожалуйста, предоставьте отзыв в комментарии, а не просто добавляйте отрицательность. Думаю, лучше помочь улучшить.
Комментарии:
1. Мне не ясно, чего вы хотите достичь, можете ли вы предоставить ожидаемый результат?
2. [{‘customer_id’: 423034, ‘customer_name’: ‘Reliance Industries Limited’}, {‘customer_id’: 423034, ‘customer_name’: ‘Reliance Industries Limited’}, {‘customer_id’: 423034, ‘customer_name’: ‘Reliance Industries Limited’}, {‘customer_id’: 423034, ‘customer_name’: ‘Reliance Industries Limited’}] Это должно быть только так, но в этом имена одинаковы .. в основном должен появиться список словарей.
3. Создайте новый
item
dict для каждой итерации.
Ответ №1:
Можете ли вы попробовать следующее:
for i in customer_list:
item = {}
item["customer_id"] = i["id"]
item["customer_name"] = i["company_name"]
print(item)
answer.append(item)
Вывод следующий:
[
{'customer_id': 422689, 'customer_name': 'Amazon inc'},
{'customer_id': 423053, 'customer_name': 'HP Globalsoft pvt ltd'},
{'customer_id': 422666, 'customer_name': 'Microsoft Corporation'},
{'customer_id': 423034, 'customer_name': 'Reliance Industries Limited'}
]
Комментарии:
1. да, видите, все элементы одинаковы?
2. секундочку, пожалуйста
3. Он предоставляет только ключевые значения с расширением!
4. да, но в решении я использовал
append
вместо extend и создал новый dict внутриfor
цикла