Skip to content

Instantly share code, notes, and snippets.

@lgfa29
Created January 21, 2022 00:28
Show Gist options
  • Save lgfa29/7f6a47404827883f3886b383f8e3f536 to your computer and use it in GitHub Desktop.
Save lgfa29/7f6a47404827883f3886b383f8e3f536 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 6,
"id": "ec220057-8a4e-4d07-81fb-b800bfc640ab",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: requests in /opt/conda/lib/python3.9/site-packages (2.25.1)\n",
"Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.9/site-packages (from requests) (2020.12.5)\n",
"Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.9/site-packages (from requests) (1.26.4)\n",
"Requirement already satisfied: chardet<5,>=3.0.2 in /opt/conda/lib/python3.9/site-packages (from requests) (4.0.0)\n",
"Requirement already satisfied: idna<3,>=2.5 in /opt/conda/lib/python3.9/site-packages (from requests) (2.10)\n"
]
}
],
"source": [
"!pip install requests"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "09e2f861-79dd-4374-9193-4069eda52422",
"metadata": {},
"outputs": [],
"source": [
"import requests"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "315fb5e9-5c58-4fd8-b128-38d326ae83bd",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 15.4 ms, sys: 2.41 ms, total: 17.8 ms\n",
"Wall time: 91.5 ms\n"
]
},
{
"data": {
"text/plain": [
"[{'userId': 1,\n",
" 'id': 1,\n",
" 'title': 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit',\n",
" 'body': 'quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto'}]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"\n",
"r = requests.get('https://jsonplaceholder.typicode.com/posts')\n",
"posts = r.json()\n",
"posts[0:1]"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "db8e051e-1c3a-4eb7-8ded-dfba3127223b",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 1.07 s, sys: 96.3 ms, total: 1.16 s\n",
"Wall time: 7.41 s\n"
]
},
{
"data": {
"text/plain": [
"{'id': 1,\n",
" 'title': 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit',\n",
" 'body': 'quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto',\n",
" 'name': 'Leanne Graham',\n",
" 'username': 'Bret',\n",
" 'email': 'Sincere@april.biz'}"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"\n",
"posts_com_user = []\n",
"\n",
"for post in posts:\n",
" user_id = post['userId']\n",
" r = requests.get(f'https://jsonplaceholder.typicode.com/users/{user_id}')\n",
" user = r.json()\n",
" \n",
" posts_com_user.append({\n",
" 'id': post['id'],\n",
" 'title': post['title'],\n",
" 'body': post['body'],\n",
" 'name': user['name'],\n",
" 'username': user['username'],\n",
" 'email': user['email'],\n",
" })\n",
"\n",
"posts_com_user[0]"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "e55cbf3c-eea9-40c1-b506-ed80060a8734",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'id': 1,\n",
" 'name': 'Leanne Graham',\n",
" 'username': 'Bret',\n",
" 'email': 'Sincere@april.biz',\n",
" 'address': {'street': 'Kulas Light',\n",
" 'suite': 'Apt. 556',\n",
" 'city': 'Gwenborough',\n",
" 'zipcode': '92998-3874',\n",
" 'geo': {'lat': '-37.3159', 'lng': '81.1496'}},\n",
" 'phone': '1-770-736-8031 x56442',\n",
" 'website': 'hildegard.org',\n",
" 'company': {'name': 'Romaguera-Crona',\n",
" 'catchPhrase': 'Multi-layered client-server neural-net',\n",
" 'bs': 'harness real-time e-markets'}}"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"r = requests.get(f'https://jsonplaceholder.typicode.com/users')\n",
"users = r.json()\n",
"users[0]"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "16e6e814-fad9-4b08-829e-53aadb6c1500",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 208 µs, sys: 0 ns, total: 208 µs\n",
"Wall time: 219 µs\n"
]
},
{
"data": {
"text/plain": [
"{'id': 1,\n",
" 'title': 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit',\n",
" 'body': 'quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto',\n",
" 'name': 'Leanne Graham',\n",
" 'username': 'Bret',\n",
" 'email': 'Sincere@april.biz'}"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"\n",
"posts_com_user = []\n",
"\n",
"for post in posts:\n",
" for user in users:\n",
" if user['id'] == post['userId']:\n",
" posts_com_user.append({\n",
" 'id': post['id'],\n",
" 'title': post['title'],\n",
" 'body': post['body'],\n",
" 'name': user['name'],\n",
" 'username': user['username'],\n",
" 'email': user['email'],\n",
" })\n",
"\n",
"posts_com_user[0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d9a495eb-12f6-4af2-9db0-5520d321f959",
"metadata": {},
"outputs": [],
"source": [
"users_indexado = {}\n",
"for user in users:\n",
" users_indexado[user['id']] = user"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "b5134c95-8290-4eaa-80e9-336886916740",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 99 µs, sys: 20 µs, total: 119 µs\n",
"Wall time: 134 µs\n"
]
},
{
"data": {
"text/plain": [
"{'id': 1,\n",
" 'title': 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit',\n",
" 'body': 'quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto',\n",
" 'name': 'Leanne Graham',\n",
" 'username': 'Bret',\n",
" 'email': 'Sincere@april.biz'}"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
" \n",
"posts_com_user = []\n",
"\n",
"for post in posts:\n",
" user = users_indexado[post['userId']]\n",
" posts_com_user.append({\n",
" 'id': post['id'],\n",
" 'title': post['title'],\n",
" 'body': post['body'],\n",
" 'name': user['name'],\n",
" 'username': user['username'],\n",
" 'email': user['email'],\n",
" })\n",
" \n",
"posts_com_user[0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "6829f588-591c-47ef-96a6-4304174d74ee",
"metadata": {},
"outputs": [],
"source": [
"user_ids = []\n",
"\n",
"\n",
"for post in posts:\n",
" user_ids.append(post['userId'])\n",
"user_ids\n",
"\n",
"users = []\n",
"for user_id in user_ids:\n",
" r = request.get(...)\n",
" user = r.json()\n",
" users.append(user)\n",
" \n",
"for post in posts:\n",
" # ..."
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "fc886ac6-7d37-4439-8694-7e67776938d6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 15.7 ms, sys: 1.11 ms, total: 16.8 ms\n",
"Wall time: 89.5 ms\n"
]
},
{
"data": {
"text/plain": [
"{'id': 1,\n",
" 'title': 'sunt aut facere repellat provident occaecati excepturi optio reprehenderit',\n",
" 'body': 'quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto',\n",
" 'name': 'Leanne Graham',\n",
" 'username': 'Bret',\n",
" 'email': 'Sincere@april.biz'}"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%time\n",
"\n",
"users_cache = {}\n",
"posts_com_user = []\n",
"\n",
"for post in posts:\n",
" user_id = post['userId']\n",
" \n",
" if not user_id in users_cache:\n",
" r = requests.get(f'https://jsonplaceholder.typicode.com/users/{user_id}')\n",
" user = r.json()\n",
" users_cache[user['id']] = user\n",
" \n",
" user = users_cache[user_id]\n",
" posts_com_user.append({\n",
" 'id': post['id'],\n",
" 'title': post['title'],\n",
" 'body': post['body'],\n",
" 'name': user['name'],\n",
" 'username': user['username'],\n",
" 'email': user['email'],\n",
" })\n",
" \n",
"posts_com_user[0]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ed2fc644-c145-4cc0-9f3e-9df40155d5ed",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment