# Learn Python Series (#7) - Handling Dictionaries  #### What Will I Learn? - You will learn how to create and copy dictionaries using various techniques, - how to get (access) and set (add or modify) dictionary items / item values, - how to remove them, - you will learn about dictionary view objects and methods, and - about iterating over dictionaries. #### Requirements - A working modern computer running macOS, Windows or Ubuntu - An installed Python 3(.6) distribution, such as (for example) the Anaconda Distribution - The ambition to learn Python programming #### Difficulty Intermediate #### Curriculum (of the `Learn Python Series`): - [Learn Python Series - Intro](https://utopian.io/utopian-io/@scipio/learn-python-series-intro) - [Learn Python Series (#2) - Handling Strings Part 1](https://utopian.io/utopian-io/@scipio/learn-python-series-2-handling-strings-part-1) - [Learn Python Series (#3) - Handling Strings Part 2](https://utopian.io/utopian-io/@scipio/learn-python-series-3-handling-strings-part-2) - [Learn Python Series (#4) - Round-Up #1](https://utopian.io/utopian-io/@scipio/learn-python-series-4-round-up-1) - [Learn Python Series (#5) - Handling Lists Part 1](https://utopian.io/utopian-io/@scipio/learn-python-series-5-handling-lists-part-1) - [Learn Python Series (#6) - Handling Lists Part 2](https://utopian.io/utopian-io/@scipio/learn-python-series-6-handling-lists-part-2) # Learn Python Series (#7) - Handling Dictionaries In this `Learn Python Series` episode we will be reviewing the built-in Python data type **dictionary**. In this episode you will learn how to create and copy dictionaries using various techniques, how to get (access) and set (add or modify) dictionary items / item values, how to remove them, you will learn about dictionary view objects and methods, and about iterating over dictionaries. # What is a dictionary actually? A dictionary is a **mapping object** (currently the only standard one), meaning that it "maps" hashable mutable values to immutable keys, making the mappings themselves mutable. A dictionary stores data as an **unordered** collection of **{`key`:`value`} pairs**. (Most) other data types just have an element value. A dictionary `value` can be of any data type (meaning we can easily create **nested dictionaries** because the value can be another dictionary), but a `key` must be an immutable data type (like a tuple, a string, or a number). # Creating and copying dictionaries ### Creating using `{}` versus `dict()` You can create a new dictionary either by using **curly braces** `{}`, or by using the built-in `dict()` function. It can be empty while initiating it, or filled with some `key`:`value` pairs right away. Like so: ```python # Create an empty dictionary using curly braces `{}` dict_1 = {} print(dict_1) # {} # Create an empty dictionary using `dict()` dict_2 = dict() print(dict_2) # {} # Create a dictionary with mixed keys # (strings and integers) dict_3 = {'name': 'scipio', 'roles': ['advisor', 'moderator', 'contributor'], 1: 'banana', 2: 'dog' } print(dict_3) ''' {'name': 'scipio', 'roles': ['advisor', 'moderator', 'contributor'], 1: 'banana', 2: 'dog'} ''' ``` {} {} {'name': 'scipio', 'roles': ['advisor', 'moderator', 'contributor'], 1: 'banana', 2: 'dog'} ### Creating using `dict.fromkeys(sequence[, value])` The `dict.fromkeys()` method can be used to create a dictionary by using the values contained in a sequence (such as a string or a list). Optionally a `value` argument may be set, via which every dictionary will be set to that same corresponding value. Please observe the following examples: ```python # Create dictionary from list my_list = ['a', 'b', 'c'] my_dict = dict.fromkeys(my_list) print(my_dict) # {'a': None, 'b': None, 'c': None} # Create dictionary from string my_string = 'scipio' my_dict = {}.fromkeys(my_string) print(my_dict) # {'s': None, 'c': None, 'i': None, 'p': None, 'o': None} # ..... # Notice there are two 'i' characters # in the string "scipio", # and only one `i` key in the dictionary # Pass a default `value` argument my_keys = 'abcde' my_val = 100 my_dict = {}.fromkeys(my_keys, my_val) print(my_dict) # {'a': 100, 'b': 100, 'c': 100, 'd': 100, 'e': 100} ``` {'a': None, 'b': None, 'c': None} {'s': None, 'c': None, 'i': None, 'p': None, 'o': None} {'a': 100, 'b': 100, 'c': 100, 'd': 100, 'e': 100} ### Copying using `=` versus `dict.copy()` As is the case with lists, it is possible to copy dictionaries using the `=` operator. But if you change one copy (for example using `dict.update()` explained below), you also change the other. This is because the `=` operator only creates a **reference to the original dictionary**. For example: ```python a = {'one': 1, 'two': 2, 'three': 3} b = a b.update({'two': 9}) print(a, b) # {'one': 1, 'two': 9, 'three': 3} {'one': 1, 'two': 9, 'three': 3} ``` {'one': 1, 'two': 9, 'three': 3} {'one': 1, 'two': 9, 'three': 3} To avoid this behavior, use `dict.copy()` to create a so-called **shallow copy**, where a **new dictionary** is created. Like so: ```python a = {'one': 1, 'two': 2, 'three': 3} b = a.copy() b.update({'two': 9}) print(a,b) # `a` now stays unmodified # {'one': 1, 'two': 2, 'three': 3} {'one': 1, 'two': 9, 'three': 3} ``` {'one': 1, 'two': 2, 'three': 3} {'one': 1, 'two': 9, 'three': 3} # Getting & setting dictionary items ### Getting values using `[]` versus `dict.get()` Up until now, using strings, tuples and lists, we were accessing element values by using their index / position in the data container. But because dictionaries have no order, you can't access the dictionary items via their index. The most common way to access individual dictionary items is by using their `key`, either with a squared bracket `[]` notation or by using the `get()` method. Please note, that if the key was not found inside the dictionary, `[]` raises a KeyError, while `get()` will return `None`. For example: ```python dict_3 = {'name': 'scipio', 'roles': ['advisor', 'moderator', 'contributor'], 1: 'banana', 2: 'dog' } # Access elements using `[]` name = dict_3['name'] print(name) # scipio # Access elements using `get()` roles = dict_3.get('roles') print(roles) # ['advisor', 'moderator', 'contributor'] ``` scipio ['advisor', 'moderator', 'contributor'] ### Getting & setting using `dict.setdefault(key[, default_value])` The `dict.setdefault()` method **gets** item values by key, similar to `dict.get()`, but - in case the key is not present in the dictionary - it **sets** `dict[key]`. In case of a set, when no default value is passed as an argument, then `None` will be set, otherwise the default value will be set. Like so: ```python account = {'name': 'scipio', 'age_days': 133} # Get value with key present, no default name = account.setdefault('name') print(name, account) # scipio {'name': 'scipio', 'age_days': 133} # Get value with key present, default age = account.setdefault('age_days', 365) print(age, account) # 133 {'name': 'scipio', 'age_days': 133} # PS: because the key is present, nothing is set / modified # Get value with key absent, no default: # `None` value is set. sbd = account.setdefault('sbd') print(sbd, account) # None {'name': 'scipio', 'age_days': 133, 'sbd': None} # Get value with key absent, no default: # `Default argument` value is set. steempower = account.setdefault('steempower', 999999) print(steempower, account) # 999999 {'name': 'scipio', 'age_days': 133, 'sbd': None, 'steempower': 999999} ``` scipio {'name': 'scipio', 'age_days': 133} 133 {'name': 'scipio', 'age_days': 133} None {'name': 'scipio', 'age_days': 133, 'sbd': None} 999999 {'name': 'scipio', 'age_days': 133, 'sbd': None, 'steempower': 999999} # Updating (modifying) and adding dictionairy items ### Using the `= ` operator Because dictionaries are mutable, we can simply add and modify its using the assignment `=` operator. The syntax is: `dict[key] = value`. If the key isn't there, it gets added, and if it is, it gets modified. For example: ```python my_dict = {'a': 100, 'b': 50} print(my_dict) # {'a': 100, 'b': 50} # adding an item my_dict['c'] = 100 print(my_dict) # {'a': 100, 'b': 50, 'c': 100} # modifying an item my_dict['a'] = 200 print(my_dict) # {'a': 100, 'b': 50, 'c': 100} ``` {'a': 100, 'b': 50} {'a': 100, 'b': 50, 'c': 100} {'a': 200, 'b': 50, 'c': 100} ### Using the `dict.update()` method The `update()` method updates existing items or adds then when absent. As the `update()` argument a dictionary, a list of 2-tuples, or keyword arguments are accepted. This works as follows: ```python test = {'a': 1, 'b': 2} # update with dictionary test.update({'a': 100, 'b': 200, 'c': 300}) print(test) # {'a': 100, 'b': 200, 'c': 300} # update with a list of 2-tuples test.update([('d', 40),('a', 10),('c', 10)]) print(test) # {'a': 10, 'b': 200, 'c': 10, 'd': 40} # update with keyword arguments test.update(a=50, b=100, c=150, d=200) print(test) ``` {'a': 100, 'b': 200, 'c': 300} {'a': 10, 'b': 200, 'c': 10, 'd': 40} {'a': 50, 'b': 100, 'c': 150, 'd': 200} # Removing dictionary items Python has various "dictionary-only" methods and built-in functions for removing items from a dictionary, or the entire dictionary itself. We will hereby discuss (most of) them. ### Using the `dict.pop(key[, default])` method The `pop()` method looks if a given `key` is in the dictionary, and if so, it both removes it and returns its value. When the `key` is not in the dictionary, either a KeyError is raised or, if set, the `default` value is returned. Please observe the following examples: ```python my_dict1 = {'one': 1, 'two': 2, 'three': 3} # Remove and return `'three'` res = my_dict1.pop('three') print(res, my_dict1) # 3 {'one': 1, 'two': 2} ``` 3 {'one': 1, 'two': 2} ```python # Remove and return `'four'`, which is absent, # so in turn return the default `9` value, # and not a KeyError my_dict2 = {'one': 1, 'two': 2, 'three': 3, 'five': 5} res = my_dict2.pop('four', 9) print(res, my_dict2) # 9 {'one': 1, 'two': 2, 'three': 3, 'five': 5} ``` 9 {'one': 1, 'two': 2, 'three': 3, 'five': 5} ### Using the `dict.popitem()` method The `popitem()` method doesn't accept any argument, and removes and returns an **arbitrary item** from the dictionary. Like is the case with `dict.pop()`, in case `popitem()` is called at an empty dictionary, a KeyError is raised. Question: Why is `popitem()` useful, if you're unable to determine which key will be removed and returned? Answer: `popitem()` can be be used to destructively iterate, using a loop, over a dictionary. Please regard the following examples: ```python test1 = {'one': 1, 'two': 2, 'three': 3} # Remove and return one existing item result = test1.popitem() print(result) print(test1) # ('three', 3) # {'one': 1, 'two': 2} ``` ('three', 3) {'one': 1, 'two': 2} ```python test2 = {'one': 1, 'two': 2, 'three': 3} # Create a `destruct_dict()` function def destruct_dict(dict): while len(dict) > 0: print(dict.popitem(), dict) else: print('Done!') # Call `destruct_dict()` destruct_dict(test2) # ('three', 3) {'one': 1, 'two': 2} # ('two', 2) {'one': 1} # ('one', 1) {} # Done! ``` ('three', 3) {'one': 1, 'two': 2} ('two', 2) {'one': 1} ('one', 1) {} Done! **PS: did you notice that I now used a `while .. else` clause? ;-)** ### Using the `dict.clear()` method Like lists, dictionaries also have a `clear()` method, which removes all items contained in a dictionary. ```python test3 = {'one': 1, 'two': 2, 'three': 3} test3.clear() print(test3) # {} ``` {} ### Using the `del` statement As is the case with lists, dictionaries can also make use of the del statement to remove items from a dictionary or delete the entire dictionary. For example: ```python test4 = {'one': 1, 'two': 2, 'three': 3} # remove one item del test4['three'] print(test4) # {'one': 1, 'two': 2} # remove the entire dictionary del test4 ``` {'one': 1, 'two': 2} # Dictionary view objects A dictionary can use the methods `dict.keys()`, `dict.values()`, and `dict.items()`. The objects that are returned are so-called **view objects** and they are iterable. When iterating (using a loop) over dictionary keys and values, the order in which that happens is **arbitrary**, but non-random, dependent on when what was added, deleted and modified on the dictionary, and the order varies per Python distribution. However, when iterating over dictionary views, the keys and values are iterated over in the same order, which allows for zipping `(value, key)` and `(key, value)` pairs using `zip()`. For example: ```python # Iterate over the dict numerical values # and sum them. a = {'one': 1, 'two': 2, 'three': 3} values = a.values() total = 0 for val in values: total += val print(total) # 6 # Iterating over keys and values is done # in the same order for keys and values b = {'dogs': 10, 'cats': 15, 'cows': 20} keys = b.keys() values = b.values() print(list(keys)) print(list(values)) # ['dogs', 'cats', 'cows'] # [10, 15, 20] # ..... # And because the keys and values are # in the same order, that allows for # zipping the key/value views as pairs pairs = list(zip(keys, values)) print(pairs) # [('dogs', 10), ('cats', 15), ('cows', 20)] # ... # Same thing using `dict.items()` c = {'account': 'utopian-io', 'rep': 66.1, 'age_days': 159} items = c.items() print(list(items)) ``` 6 ['dogs', 'cats', 'cows'] [10, 15, 20] [('dogs', 10), ('cats', 15), ('cows', 20)] [('account', 'utopian-io'), ('rep', 66.1), ('age_days', 159)] # Handling nested dictionaries Up until now, we've been discussing "flat" dictionary structures. But in case a dictionary `value` is a **dictionary itself**, ergo, when a `value` itself consists of one or more `key`:`value` **pairs**, then, in that case, a dictionary is contained within another dictionary, which is called a **nested dictionary**. For example: ```python # `dict_nested` holds 2 dicts: # `dict1` and `dict2` dict_nested = { 'dict1': {'key': 1}, 'dict2': {'key': 5} } print(dict_nested) # {'dict1': {'key': 1}, 'dict2': {'key': 5}} ``` {'dict1': {'key': 1}, 'dict2': {'key': 5}} ### Getting and setting nested items All the previously discussed dictionary methods and techniques apply to nested dictionaries as well, for example using the squared bracket `[]` notation, repeatedly. ```python countries = { 'USA': {'capital': 'Washington, D.C.', 'main_language': 'English'}, 'Germany': {'capital': 'Berlin', 'main_language': 'German'}, 'France': {'capital': 'Paris', 'main_language': 'French'}, 'The Netherlands': {'capital': 'Amsterdam', 'main_language': 'Dutch'} } # get individual values print(countries['USA']['main_language']) print(countries['The Netherlands']['capital']) ``` English Amsterdam ```python countries = { 'USA': {'capital': 'Washington, D.C.', 'main_language': 'English'}, 'Germany': {'capital': 'Berlin', 'main_language': 'German'}, 'France': {'capital': 'Paris', 'main_language': 'French'}, 'The Netherlands': {'capital': 'Amsterdam', 'main_language': 'Dutch'} } # iterating over the outer dict keys for country in countries: print(country) ``` USA Germany France The Netherlands ```python countries = { 'USA': {'capital': 'Washington, D.C.', 'main_language': 'English'}, 'Germany': {'capital': 'Berlin', 'main_language': 'German'}, 'France': {'capital': 'Paris', 'main_language': 'French'}, 'The Netherlands': {'capital': 'Amsterdam', 'main_language': 'Dutch'} } # iterating over outer items and inner keys for country, data in countries.items(): print('Country:',country) print('------------------') for key in data: print(key + ':\t' + data[key]) print('\n') ``` Country: USA ------------------ capital: Washington, D.C. main_language: English Country: Germany ------------------ capital: Berlin main_language: German Country: France ------------------ capital: Paris main_language: French Country: The Netherlands ------------------ capital: Amsterdam main_language: Dutch # What did we learn, hopefully? That dictionaries are a very interesting and useful data type, what dictionaries are and how to use them. In the next few episodes we will continue discussing some more built-in Python data types. See you there! ### Thank you for your time! <br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@scipio/learn-python-series-7-handling-dictionaries">Utopian.io - Rewarding Open Source Contributors</a></em><hr/>
author | scipio | ||||||
---|---|---|---|---|---|---|---|
permlink | learn-python-series-7-handling-dictionaries | ||||||
category | utopian-io | ||||||
json_metadata | "{"community":"utopian","app":"utopian/1.0.0","format":"markdown","repository":{"id":81598961,"name":"cpython","full_name":"python/cpython","html_url":"https://github.com/python/cpython","fork":false,"owner":{"login":"python"}},"pullRequests":[],"platform":"github","type":"tutorials","tags":["utopian-io","steemdev","steemstem","open-source","python"],"users":["scipio"],"links":["https://res.cloudinary.com/hpiynhbhq/image/upload/v1520771501/jyhoteomp3nxmstkpl0t.png","https://utopian.io/utopian-io/@scipio/learn-python-series-intro","https://utopian.io/utopian-io/@scipio/learn-python-series-2-handling-strings-part-1","https://utopian.io/utopian-io/@scipio/learn-python-series-3-handling-strings-part-2","https://utopian.io/utopian-io/@scipio/learn-python-series-4-round-up-1","https://utopian.io/utopian-io/@scipio/learn-python-series-5-handling-lists-part-1","https://utopian.io/utopian-io/@scipio/learn-python-series-6-handling-lists-part-2"],"image":["https://res.cloudinary.com/hpiynhbhq/image/upload/v1520771501/jyhoteomp3nxmstkpl0t.png"],"moderator":{"account":"cha0s0000","time":"2018-03-11T14:02:01.447Z","reviewed":true,"pending":false,"flagged":false},"questions":[{"question":"Is the project description formal?","answers":[{"value":"Yes it’s straight to the point","selected":true,"score":10},{"value":"Need more description ","selected":false,"score":5},{"value":"Not too descriptive","selected":false,"score":0}],"selected":0},{"question":"Is the language / grammar correct?","answers":[{"value":"Yes","selected":true,"score":20},{"value":"A few mistakes","selected":false,"score":10},{"value":"It's pretty bad","selected":false,"score":0}],"selected":0},{"question":"Was the template followed?","answers":[{"value":"Yes","selected":true,"score":10},{"value":"Partially","selected":false,"score":5},{"value":"No","selected":false,"score":0}],"selected":0},{"question":"Is there information about the additional frameworks?","answers":[{"value":"Yes, everything is explained","selected":true,"score":5},{"value":"Yes, but not enough","selected":false,"score":3},{"value":"No details at all","selected":false,"score":0}],"selected":0},{"question":"Is there code in the tutorial?","answers":[{"value":"Yes, and it’s well explained","selected":true,"score":5},{"value":"Yes, but no explanation","selected":false,"score":3},{"value":"No","selected":false,"score":0}],"selected":0},{"question":"Is the tutorial explains technical aspects well enough?","answers":[{"value":"Yes, it teaches how and why about technical aspects","selected":true,"score":5},{"value":"Yes, but it’s not good/enough","selected":false,"score":3},{"value":"No, it explains poorly","selected":false,"score":0}],"selected":0},{"question":"Is the tutorial general and dense enough?","answers":[{"value":"Yes, it’s general and dense","selected":true,"score":5},{"value":"Kinda, it might be more generalized","selected":false,"score":3},{"value":"No, it’s sliced unnecessarily to keep part number high","selected":false,"score":0}],"selected":0},{"question":"Is there an outline for the tutorial content at the beginning of the post","answers":[{"value":"Yes, there is a well prepared outline in “What will I learn?” or another outline section","selected":true,"score":5},{"value":"Yes, but there is no proper listing for every step of the tutorial or it’s not detailed enough","selected":false,"score":3},{"value":"No, there is no outline for the steps.","selected":false,"score":0}],"selected":0},{"question":"Is the visual content of good quality?","answers":[{"value":"Yes","selected":true,"score":5},{"value":"Yes, but bad quality","selected":false,"score":3},{"value":"No","selected":false,"score":0}],"selected":0},{"question":"Is this a tutorial series?","answers":[{"value":"Yes","selected":true,"score":5},{"value":"Yes, but first part","selected":false,"score":3},{"value":"No","selected":false,"score":0}],"selected":0},{"question":"Is the tutorial post structured?","answers":[{"value":"Yes","selected":true,"score":5},{"value":"Not so good","selected":false,"score":3},{"value":"No","selected":false,"score":0}],"selected":0}],"score":94}" | ||||||
created | 2018-03-11 12:37:33 | ||||||
last_update | 2018-03-11 14:02:12 | ||||||
depth | 0 | ||||||
children | 6 | ||||||
last_payout | 2018-03-18 12:37:33 | ||||||
cashout_time | 1969-12-31 23:59:59 | ||||||
total_payout_value | 48.010 HBD | ||||||
curator_payout_value | 18.816 HBD | ||||||
pending_payout_value | 0.000 HBD | ||||||
promoted | 0.000 HBD | ||||||
body_length | 16,990 | ||||||
author_reputation | 34,157,471,478,668 | ||||||
root_title | "Learn Python Series (#7) - Handling Dictionaries" | ||||||
beneficiaries |
| ||||||
max_accepted_payout | 1,000,000.000 HBD | ||||||
percent_hbd | 10,000 | ||||||
post_id | 43,697,643 | ||||||
net_rshares | 25,218,080,623,749 | ||||||
author_curate_reward | "" |
voter | weight | wgt% | rshares | pct | time |
---|---|---|---|---|---|
drifter1 | 0 | 3,578,873,168 | 100% | ||
olyup | 0 | 45,730,509,210 | 100% | ||
ghasemkiani | 0 | 51,081,240,482 | 5% | ||
techslut | 0 | 449,327,828,978 | 5% | ||
thatmemeguy | 0 | 4,706,452,760 | 50% | ||
dyancuex | 0 | 1,045,415,832 | 50% | ||
michelios | 0 | 33,746,504,755 | 20% | ||
toninux | 0 | 655,497,073 | 50% | ||
mikegg89 | 0 | 750,231,584 | 100% | ||
jdc | 0 | 713,298,008 | 20% | ||
bargolis | 0 | 671,130,437 | 5% | ||
aleister | 0 | 15,529,823,408 | 100% | ||
mkt | 0 | 45,754,800,371 | 100% | ||
diogogomes | 0 | 238,536,464 | 63% | ||
walnut1 | 0 | 7,334,033,173 | 5% | ||
ilyastarar | 0 | 74,031,516,086 | 50% | ||
flauwy | 0 | 67,639,254,284 | 35% | ||
herman2141 | 0 | 145,728,139 | 50% | ||
prechi | 0 | 4,502,608,132 | 50% | ||
mahdiyari | 0 | 12,604,422,503 | 20% | ||
ronimm | 0 | 14,213,632,337 | 100% | ||
mufasatoldyou | 0 | 7,650,082,427 | 100% | ||
sensation | 0 | 207,106,028 | 100% | ||
dysc0rd | 0 | 409,335,518 | 100% | ||
st3llar | 0 | 622,283,084 | 3% | ||
simonluisi | 0 | 2,454,504,784 | 100% | ||
thinkkniht | 0 | 500,079,142 | 75% | ||
ewuoso | 0 | 34,743,664,012 | 20% | ||
jfuenmayor96 | 0 | 2,434,554,354 | 50% | ||
steemitri | 0 | 9,182,291,871 | 10% | ||
onos | 0 | 109,373,132 | 5% | ||
kofspades | 0 | 574,043,683 | 50% | ||
jasonbu | 0 | 21,060,065,532 | 50% | ||
nettybot | 0 | 10,655,200,019 | 20% | ||
justdentist | 0 | 2,943,263,780 | 5% | ||
fabiyamada | 0 | 7,426,849,840 | 100% | ||
matrixonsteem | 0 | 577,789,734 | 100% | ||
cifer | 0 | 5,638,439,420 | 80% | ||
steemliberator | 0 | 729,961,539 | 100% | ||
tradeownsystems | 0 | 467,022,333 | 100% | ||
jesdn16 | 0 | 2,985,151,680 | 100% | ||
xtramedium | 0 | 219,508,516 | 50% | ||
mrtech | 0 | 53,758,974 | 50% | ||
msp3k | 0 | 5,502,304,491 | 100% | ||
witnessstats | 0 | 577,342,773 | 100% | ||
stoodkev | 0 | 129,945,523,439 | 80% | ||
olusolaemmanuel | 0 | 143,654,136 | 5% | ||
luisrod | 0 | 112,141,424 | 15% | ||
ansonoxy | 0 | 1,750,813,906 | 100% | ||
jamesbarraclough | 0 | 3,408,087,748 | 100% | ||
smafey | 0 | 1,147,619,805 | 50% | ||
hillaryaa | 0 | 1,120,226,365 | 100% | ||
espoem | 0 | 58,569,423,866 | 100% | ||
timmyeu | 0 | 830,363,823 | 50% | ||
r2steem2 | 0 | 581,461,340 | 100% | ||
maxwell95 | 0 | 149,102,640 | 50% | ||
loshcat | 0 | 1,709,757,513 | 100% | ||
steemline | 0 | 200,661,170 | 100% | ||
steemcreate | 0 | 614,940,164 | 100% | ||
altherion | 0 | 39,762,113,714 | 100% | ||
omersurer | 0 | 184,730,786 | 1% | ||
idlebright | 0 | 3,144,520,923 | 50% | ||
trabajadigital | 0 | 306,482,091 | 50% | ||
odebgaming | 0 | 444,389,360 | 100% | ||
utopian-io | 0 | 23,699,192,414,066 | 15.05% | ||
steaknsteem | 0 | 2,000,843,033 | 50% | ||
masud222 | 0 | 226,655,881 | 50% | ||
sayed53 | 0 | 223,592,964 | 50% | ||
moorkedi | 0 | 2,558,062,005 | 100% | ||
parag | 0 | 223,614,172 | 50% | ||
dailypick | 0 | 539,164,850 | 100% | ||
kslo | 0 | 2,486,190,769 | 50% | ||
mrmaracucho | 0 | 577,861,595 | 100% | ||
nathalie13 | 0 | 837,197,779 | 100% | ||
not-a-bird | 0 | 1,656,550,816 | 20% | ||
adhew | 0 | 61,532,000 | 10% | ||
bitopia | 0 | 1,444,054,117 | 100% | ||
robertlyon | 0 | 5,288,937,508 | 100% | ||
eleonardo | 0 | 62,516,977 | 10% | ||
zohaib715 | 0 | 318,981,144 | 50% | ||
evilest-fiend | 0 | 2,744,084,251 | 100% | ||
scipio | 0 | 110,595,446,119 | 100% | ||
thashadowbrokers | 0 | 70,313,520 | 100% | ||
studytext | 0 | 147,922,299 | 25% | ||
greenorange | 0 | 613,506,280 | 100% | ||
farmacistasmz | 0 | 1,528,111,514 | 100% | ||
fabiocola | 0 | 823,959,222 | 100% | ||
checkthisout | 0 | 821,476,271 | 50% | ||
navx | 0 | 2,031,197,591 | 70% | ||
handfree42 | 0 | 223,972,241 | 50% | ||
ilovekrys | 0 | 240,258,050 | 50% | ||
lextenebris | 0 | 5,237,892,911 | 20% | ||
family.app | 0 | 96,249,800 | 100% | ||
cgbartow | 0 | 2,110,342,143 | 25% | ||
varja | 0 | 489,664,279 | 50% | ||
maphics | 0 | 106,304,356 | 100% | ||
dethclad | 0 | 1,485,394,345 | 50% | ||
sebastiengllmt | 0 | 306,503,607 | 50% | ||
utopian-1up | 0 | 18,198,545,993 | 100% | ||
brotato | 0 | 343,088,631 | 100% | ||
pizaz | 0 | 336,381,463 | 100% | ||
triplethreat | 0 | 70,275,217 | 100% | ||
dootdoot | 0 | 51,522,768 | 100% | ||
wewt | 0 | 5,741,504,944 | 20% | ||
conflaxus | 0 | 70,240,126 | 100% | ||
tittilatey | 0 | 70,298,565 | 100% | ||
cajun | 0 | 336,965,355 | 100% | ||
coonass | 0 | 336,609,817 | 100% | ||
squirrelnuts | 0 | 336,460,789 | 100% | ||
odesanya | 0 | 61,429,711 | 10% | ||
luoq | 0 | 9,774,245,282 | 50% | ||
steemdevs | 0 | 336,205,394 | 100% | ||
carsonroscoe | 0 | 5,415,490,053 | 50% | ||
jeezy | 0 | 70,210,114 | 100% | ||
skaybliss | 0 | 89,292,866 | 20% | ||
test.with.dots | 0 | 70,211,493 | 100% | ||
pi-pi | 0 | 70,176,140 | 100% | ||
listentosteem | 0 | 70,172,355 | 100% | ||
zlatkamrs | 0 | 429,419,978 | 70% | ||
amosbastian | 0 | 20,516,973,916 | 100% | ||
bobsthinking | 0 | 4,604,660,812 | 100% | ||
yourmercury | 0 | 870,798,883 | 100% | ||
acrywhif | 0 | 3,332,936,864 | 80% | ||
xplore | 0 | 475,517,256 | 50% | ||
gravy | 0 | 70,151,519 | 100% | ||
proffgodswill | 0 | 61,299,229 | 10% | ||
eprolific | 0 | 303,228,814 | 50% | ||
nataly2317 | 0 | 226,745,170 | 50% | ||
sweeverdev | 0 | 1,052,002,634 | 50% | ||
isacastillor | 0 | 1,262,415,784 | 95% | ||
devilonwheels | 0 | 1,793,141,628 | 10% | ||
anmeitheal | 0 | 5,071,904,460 | 50% | ||
funkylove | 0 | 2,452,759,084 | 32% | ||
rhotimee | 0 | 5,795,937,658 | 50% | ||
blogger-funda | 0 | 457,166,651 | 100% | ||
mertimza | 0 | 557,999,749 | 100% | ||
jrmiller87 | 0 | 2,414,294,614 | 100% | ||
solomon507 | 0 | 473,671,200 | 50% | ||
patatesyiyen | 0 | 75,184,681 | 12.5% | ||
deejee | 0 | 122,575,017 | 20% | ||
e-babil | 0 | 1,461,248,338 | 40% | ||
onin91 | 0 | 437,308,890 | 50% | ||
neneandy | 0 | 3,600,635,592 | 50% | ||
kookjames | 0 | 946,381,139 | 100% | ||
isabella394 | 0 | 2,485,922,576 | 100% | ||
emailbox19149 | 0 | 141,232,282 | 50% | ||
videosteemit | 0 | 1,538,356,079 | 25% | ||
singhbinod08 | 0 | 4,360,763,972 | 100% | ||
faisalali734 | 0 | 423,187,204 | 100% | ||
lemony-cricket | 0 | 9,463,813,272 | 20% | ||
yeswanth | 0 | 613,361,162 | 100% | ||
madhavi009 | 0 | 226,959,531 | 100% | ||
kaking | 0 | 217,464,174 | 50% | ||
exploreand | 0 | 5,617,207,911 | 25% | ||
kaylog | 0 | 303,409,531 | 50% | ||
petvalbra | 0 | 612,587,562 | 100% | ||
steemassistant | 0 | 500,112,909 | 100% | ||
hmctrasher | 0 | 381,207,215 | 10% | ||
photohunter2 | 0 | 102,540,086 | 100% | ||
photohunter3 | 0 | 99,604,162 | 100% | ||
photohunter4 | 0 | 84,986,416 | 100% | ||
photohunter5 | 0 | 82,487,898 | 100% | ||
josh26 | 0 | 74,203,538 | 10% | ||
howtosteem | 0 | 3,885,151,071 | 100% | ||
sylinda | 0 | 223,609,272 | 50% | ||
mamicco | 0 | 502,730,282 | 100% | ||
jbeguna04 | 0 | 490,491,608 | 50% | ||
fmbs25 | 0 | 287,457,318 | 50% | ||
livsky | 0 | 371,954,105 | 50% | ||
badmusazeez | 0 | 101,106,647 | 50% | ||
polbot | 0 | 1,016,311,842 | 50% | ||
roj | 0 | 1,579,280,971 | 100% | ||
sexygirl123 | 0 | 162,698,954 | 50% | ||
aderemi01 | 0 | 1,049,964,975 | 50% | ||
killbill73 | 0 | 147,021,966 | 50% | ||
amirdesaingrafis | 0 | 306,289,600 | 50% | ||
fai.zul | 0 | 308,026,821 | 50% | ||
nightdragon | 0 | 146,870,871 | 50% | ||
jacintoelbarouki | 0 | 235,931,798 | 50% | ||
mtndmr | 0 | 593,124,493 | 100% | ||
reazuliqbal | 0 | 1,212,895,580 | 100% | ||
aliyu-s | 0 | 376,743,302 | 50% | ||
estherekanem | 0 | 91,925,793 | 20% | ||
muratti | 0 | 505,258,001 | 100% | ||
opulence | 0 | 1,796,284,892 | 50% | ||
phasma | 0 | 122,604,626 | 20% | ||
leatherwolf | 0 | 566,628,232 | 100% | ||
heshe-f | 0 | 322,870,600 | 25% | ||
donjyde | 0 | 221,763,265 | 50% | ||
kucukprens | 0 | 207,236,276 | 50% | ||
crispycoinboys | 0 | 2,299,009,515 | 30% | ||
chosunone | 0 | 21,219,544,823 | 100% | ||
gwapoaller | 0 | 294,043,933 | 50% | ||
bluestorm | 0 | 459,735,758 | 75% | ||
dexter24 | 0 | 215,462,639 | 50% | ||
theagriculturist | 0 | 270,428,381 | 50% | ||
pepememes | 0 | 165,113,878 | 50% | ||
opti | 0 | 462,160,229 | 100% | ||
animesukidesu | 0 | 177,817,957 | 50% | ||
brightex | 0 | 270,801,762 | 50% | ||
esme-svh | 0 | 270,055,707 | 50% | ||
shakibul | 0 | 211,394,278 | 100% | ||
derasmo | 0 | 521,746,180 | 50% | ||
flugbot | 0 | 122,643,184 | 100% | ||
lemcriq | 0 | 57,226,213 | 20% | ||
steemlore | 0 | 102,168,698 | 50% | ||
panotwo | 0 | 600,604,279 | 100% | ||
sildude | 0 | 604,654,774 | 100% | ||
truthtrader | 0 | 60,947,397 | 50% | ||
odesias | 0 | 597,217,494 | 100% | ||
clayjohn | 0 | 554,340,341 | 100% | ||
abaspatrick | 0 | 444,082,514 | 100% |
Thank you for the contribution. It has been approved. - Life is short , we use Python You can contact us on [Discord](https://discord.gg/uTyJkNm). **[[utopian-moderator]](https://utopian.io/moderators)**
author | cha0s0000 |
---|---|
permlink | re-scipio-learn-python-series-7-handling-dictionaries-20180311t140236534z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} |
created | 2018-03-11 14:02:36 |
last_update | 2018-03-11 14:02:36 |
depth | 1 |
children | 0 |
last_payout | 2018-03-18 14:02:36 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 206 |
author_reputation | 30,983,518,016,225 |
root_title | "Learn Python Series (#7) - Handling Dictionaries" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 43,710,956 |
net_rshares | 0 |
This post has been upvoted and picked by [Daily Picked #3](https://steemit.com/curation/@dailypick/dailypick-2-11-march)! Thank you for the cool and quality content. Keep going! Don’t forget I’m not a robot. I explore, read, upvote and share manually :)
author | dailypick |
---|---|
permlink | re-scipio-learn-python-series-7-handling-dictionaries-20180311t191244325z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"links":["https://steemit.com/curation/@dailypick/dailypick-2-11-march"],"app":"steemit/0.1"} |
created | 2018-03-11 19:12:45 |
last_update | 2018-03-11 19:12:45 |
depth | 1 |
children | 0 |
last_payout | 2018-03-18 19:12:45 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 255 |
author_reputation | 484,809,873,447 |
root_title | "Learn Python Series (#7) - Handling Dictionaries" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 43,761,920 |
net_rshares | 0 |
You are very intelligent @scipio
author | mdfahim |
---|---|
permlink | re-scipio-learn-python-series-7-handling-dictionaries-20180311t125052486z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"users":["scipio"],"app":"steemit/0.1"} |
created | 2018-03-11 12:50:57 |
last_update | 2018-03-11 12:50:57 |
depth | 1 |
children | 0 |
last_payout | 2018-03-18 12:50:57 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 33 |
author_reputation | 195,478,349,651 |
root_title | "Learn Python Series (#7) - Handling Dictionaries" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 43,699,505 |
net_rshares | 0 |
Thanks for your helpful blog @scipio
author | rakib505 |
---|---|
permlink | re-scipio-learn-python-series-7-handling-dictionaries-20180311t125205167z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"users":["scipio"],"app":"steemit/0.1"} |
created | 2018-03-11 12:52:06 |
last_update | 2018-03-11 12:52:06 |
depth | 1 |
children | 0 |
last_payout | 2018-03-18 12:52:06 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 36 |
author_reputation | 78,209,213,747 |
root_title | "Learn Python Series (#7) - Handling Dictionaries" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 43,699,689 |
net_rshares | 0 |
Indeed. You must be very intelligent @scipio!
author | therealwolf |
---|---|
permlink | re-scipio-learn-python-series-7-handling-dictionaries-20180311t125925918z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"users":["scipio"],"app":"steemit/0.1"} |
created | 2018-03-11 12:59:21 |
last_update | 2018-03-11 12:59:21 |
depth | 1 |
children | 0 |
last_payout | 2018-03-18 12:59:21 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 45 |
author_reputation | 581,207,180,122,024 |
root_title | "Learn Python Series (#7) - Handling Dictionaries" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 43,700,743 |
net_rshares | 0 |
### Hey @scipio I am @utopian-io. I have just upvoted you! #### Achievements - WOW WOW WOW People loved what you did here. GREAT JOB! - Seems like you contribute quite often. AMAZING! #### Community-Driven Witness! I am the first and only Steem Community-Driven Witness. <a href="https://discord.gg/zTrEMqB">Participate on Discord</a>. Lets GROW TOGETHER! - <a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1">Vote for my Witness With SteemConnect</a> - <a href="https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1">Proxy vote to Utopian Witness with SteemConnect</a> - Or vote/proxy on <a href="https://steemit.com/~witnesses">Steemit Witnesses</a> [](https://steemit.com/~witnesses) **Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x**
author | utopian-io |
---|---|
permlink | re-scipio-learn-python-series-7-handling-dictionaries-20180312t105624838z |
category | utopian-io |
json_metadata | {"tags":["utopian-io"],"community":"utopian","app":"utopian/1.0.0"} |
created | 2018-03-12 10:56:24 |
last_update | 2018-03-12 10:56:24 |
depth | 1 |
children | 0 |
last_payout | 2018-03-19 10:56:24 |
cashout_time | 1969-12-31 23:59:59 |
total_payout_value | 0.000 HBD |
curator_payout_value | 0.000 HBD |
pending_payout_value | 0.000 HBD |
promoted | 0.000 HBD |
body_length | 1,061 |
author_reputation | 152,955,367,999,756 |
root_title | "Learn Python Series (#7) - Handling Dictionaries" |
beneficiaries | [] |
max_accepted_payout | 1,000,000.000 HBD |
percent_hbd | 10,000 |
post_id | 43,882,545 |
net_rshares | 0 |