Last active
January 6, 2016 15:57
-
-
Save geovanisouza92/40a80fcb73cf971b2acd to your computer and use it in GitHub Desktop.
Comparativo entre formas de remover itens de um dicionário no Python
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def gen_dict(n):\n", | |
| " \"\"\"Generate sample dict\"\"\"\n", | |
| " return { 'item%d' % i : 'item%d' % i for i in xrange(n) }" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def dict_del(n):\n", | |
| " \"\"\"Remove using dict.__del__(key)\"\"\"\n", | |
| " d1 = gen_dict(n)\n", | |
| " del d1['item123']\n", | |
| " del d1['item456']\n", | |
| " del d1['item789']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def dict_pop(n):\n", | |
| " \"\"\"Remove using dict.pop(key, default)\"\"\"\n", | |
| " d1 = gen_dict(n)\n", | |
| " d1.pop('item123', None)\n", | |
| " d1.pop('item456', None)\n", | |
| " d1.pop('item789', None)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def dict_map(n):\n", | |
| " \"\"\"Map keys to dict.pop(key)\"\"\"\n", | |
| " d1 = gen_dict(n)\n", | |
| " map(d1.pop, ['item123', 'item456', 'item789'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def dict_map2(n):\n", | |
| " \"\"\"Map keys to dict.pop(key, default)\"\"\"\n", | |
| " d1 = gen_dict(n)\n", | |
| " map(lambda k: d1.pop(k, None), ['item123', 'item456', 'item789'])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def dict_regen(n):\n", | |
| " \"\"\"Remove by recreating the dict\"\"\"\n", | |
| " d1 = gen_dict(n)\n", | |
| " d1 = { key: d1[key] for key in d1 if key not in ['item123', 'item456', 'item789'] }" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def dict_regen2(n):\n", | |
| " \"\"\"Remove by recreating the dict (avoid dict.__getitem__(key))\"\"\"\n", | |
| " d1 = gen_dict(n)\n", | |
| " d1 = { key: value for key, value in d1.items() if key not in ['item123', 'item456', 'item789'] }" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "def dict_regen3(n):\n", | |
| " \"\"\"Remove by recreating the dict (avoid dict.__getitem__(key), w/ iterator)\"\"\"\n", | |
| " d1 = gen_dict(n)\n", | |
| " d1 = { key: value for key, value in d1.iteritems() if key not in ['item123', 'item456', 'item789'] }" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "n = 100000" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "100 loops, best of 3: 154 ms per loop\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%timeit -n100 dict_del(n)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "100 loops, best of 3: 159 ms per loop\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%timeit -n100 dict_pop(n)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 12, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "100 loops, best of 3: 158 ms per loop\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%timeit -n100 dict_map(n)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 13, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "100 loops, best of 3: 160 ms per loop\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%timeit -n100 dict_map2(n)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 14, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "100 loops, best of 3: 202 ms per loop\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%timeit -n100 dict_regen(n)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 15, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "100 loops, best of 3: 222 ms per loop\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%timeit -n100 dict_regen2(n)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 16, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "100 loops, best of 3: 198 ms per loop\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "%timeit -n100 dict_regen3(n)" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Python 2", | |
| "language": "python", | |
| "name": "python2" | |
| }, | |
| "language_info": { | |
| "codemirror_mode": { | |
| "name": "ipython", | |
| "version": 2 | |
| }, | |
| "file_extension": ".py", | |
| "mimetype": "text/x-python", | |
| "name": "python", | |
| "nbconvert_exporter": "python", | |
| "pygments_lexer": "ipython2", | |
| "version": "2.7.6" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 0 | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Jinja2==2.8 | |
| MarkupSafe==0.23 | |
| Pygments==2.0.2 | |
| argparse==1.2.1 | |
| backports-abc==0.4 | |
| backports.ssl-match-hostname==3.5.0.1 | |
| certifi==2015.11.20.1 | |
| decorator==4.0.6 | |
| functools32==3.2.3-2 | |
| ipykernel==4.2.2 | |
| ipython==4.0.1 | |
| ipython-genutils==0.1.0 | |
| ipywidgets==4.1.1 | |
| jsonschema==2.5.1 | |
| jupyter==1.0.0 | |
| jupyter-client==4.1.1 | |
| jupyter-console==4.0.3 | |
| jupyter-core==4.0.6 | |
| mistune==0.7.1 | |
| nbconvert==4.1.0 | |
| nbformat==4.0.1 | |
| notebook==4.0.6 | |
| path.py==8.1.2 | |
| pexpect==4.0.1 | |
| pickleshare==0.5 | |
| ptyprocess==0.5 | |
| pyzmq==15.1.0 | |
| qtconsole==4.1.1 | |
| simplegeneric==0.8.1 | |
| singledispatch==3.4.0.3 | |
| six==1.10.0 | |
| terminado==0.6 | |
| tornado==4.3 | |
| traitlets==4.0.0 | |
| wsgiref==0.1.2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment