Files
udemy_data_structures/Section_1/Python Data Structures.ipynb
2019-05-01 22:08:49 -07:00

1216 lines
23 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Intro to Python Data Structures\n",
"Strings, Lists, Tuples, Sets, Dicts \n",
"Created in Python 3.7 \n",
"© Joe James, 2019.\n",
"\n",
"## Sequences: String, List, Tuple\n",
"****\n",
"[Documentation](https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range) \n",
"**indexing** - access any item in the sequence using its index. \n",
"Indexing starts with 0 for the first element."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"g\n",
"cow\n",
"Kevin\n"
]
}
],
"source": [
"# string\n",
"x = 'frog'\n",
"print (x[3])\n",
"\n",
"# list\n",
"x = ['pig', 'cow', 'horse']\n",
"print (x[1])\n",
"\n",
"# tuple\n",
"x = ('Kevin', 'Niklas', 'Jenny', 'Craig')\n",
"print(x[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**slicing** - slice out substrings, sublists, subtuples using indexes. \n",
"[start : end+1 : step]"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"omp\n",
"opt\n",
"puter\n",
"compu\n",
"r\n",
"ter\n",
"comput\n"
]
}
],
"source": [
"x = 'computer'\n",
"print(x[1:4])\n",
"print(x[1:6:2])\n",
"print(x[3:])\n",
"print(x[:5])\n",
"print(x[-1])\n",
"print(x[-3:])\n",
"print(x[:-2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**adding / concatenating** - combine 2 sequences of the same type by using +"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"horseshoe\n",
"['pig', 'cow', 'horse']\n",
"('Kevin', 'Niklas', 'Jenny', 'Craig')\n"
]
}
],
"source": [
"# string\n",
"x = 'horse' + 'shoe'\n",
"print(x)\n",
"\n",
"# list\n",
"y = ['pig', 'cow'] + ['horse']\n",
"print(y)\n",
"\n",
"# tuple\n",
"z = ('Kevin', 'Niklas', 'Jenny') + ('Craig',)\n",
"print(z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**multiplying** - multiply a sequence using *"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bugbugbug\n",
"[8, 5, 8, 5, 8, 5]\n",
"(2, 4, 2, 4, 2, 4)\n"
]
}
],
"source": [
"# string\n",
"x = 'bug' * 3\n",
"print(x)\n",
"\n",
"# list\n",
"y = [8, 5] * 3\n",
"print(y)\n",
"\n",
"# tuple\n",
"z = (2, 4) * 3\n",
"print(z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**checking membership** - test whether an item is or is not in a sequence."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"True\n",
"False\n",
"True\n"
]
}
],
"source": [
"# string\n",
"x = 'bug'\n",
"print('u' in x)\n",
"\n",
"# list\n",
"y = ['pig', 'cow', 'horse']\n",
"print('cow' not in y)\n",
"\n",
"# tuple\n",
"z = ('Kevin', 'Niklas', 'Jenny', 'Craig')\n",
"print('Niklas' in z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**iterating** - iterating through the items in a sequence"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"7\n",
"8\n",
"3\n",
"0 7\n",
"1 8\n",
"2 3\n"
]
}
],
"source": [
"# item\n",
"x = [7, 8, 3]\n",
"for item in x:\n",
" print(item)\n",
" \n",
"# index & item\n",
"y = [7, 8, 3]\n",
"for index, item in enumerate(y):\n",
" print(index, item)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**number of items** - count the number of items in a sequence"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n",
"3\n",
"4\n"
]
}
],
"source": [
"# string\n",
"x = 'bug'\n",
"print(len(x))\n",
"\n",
"# list\n",
"y = ['pig', 'cow', 'horse']\n",
"print(len(y))\n",
"\n",
"# tuple\n",
"z = ('Kevin', 'Niklas', 'Jenny', 'Craig')\n",
"print(len(z))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**minimum** - find the minimum item in a sequence lexicographically. \n",
"Alpha or numeric types, but cannot mix types."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"b\n",
"cow\n",
"Craig\n"
]
}
],
"source": [
"# string\n",
"x = 'bug'\n",
"print(min(x))\n",
"\n",
"# list\n",
"y = ['pig', 'cow', 'horse']\n",
"print(min(y))\n",
"\n",
"# tuple\n",
"z = ('Kevin', 'Niklas', 'Jenny', 'Craig')\n",
"print(min(z))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**maximum** - find the maximum item in a sequence lexicographically. \n",
"Alpha or numeric types, but cannot mix types."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"u\n",
"pig\n",
"Niklas\n"
]
}
],
"source": [
"# string\n",
"x = 'bug'\n",
"print(max(x))\n",
"\n",
"# list\n",
"y = ['pig', 'cow', 'horse']\n",
"print(max(y))\n",
"\n",
"# tuple\n",
"z = ('Kevin', 'Niklas', 'Jenny', 'Craig')\n",
"print(max(z))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**sum** - find the sum of items in a sequence. \n",
"Entire sequence must be numeric."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"27\n",
"20\n",
"80\n"
]
}
],
"source": [
"# string -> error\n",
"# x = [5, 7, 'bug']\n",
"# print(sum(x)) # generates an error\n",
"\n",
"# list\n",
"y = [2, 5, 8, 12]\n",
"print(sum(y))\n",
"print(sum(y[-2:]))\n",
"\n",
"# tuple\n",
"z = (50, 4, 7, 19)\n",
"print(sum(z))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**sorting** - returns a new list of items in sorted order. \n",
"Does not change the original list."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['b', 'g', 'u']\n",
"['cow', 'horse', 'pig']\n",
"['Craig', 'Jenny', 'Kevin', 'Niklas']\n"
]
}
],
"source": [
"# string\n",
"x = 'bug'\n",
"print(sorted(x))\n",
"\n",
"# list\n",
"y = ['pig', 'cow', 'horse']\n",
"print(sorted(y))\n",
"\n",
"# tuple\n",
"z = ('Kevin', 'Niklas', 'Jenny', 'Craig')\n",
"print(sorted(z))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**sorting** - sort by second letter \n",
"Add a key parameter and a lambda function to return the second character. \n",
"(the word *key* here is a defined parameter name, *k* is an arbitrary variable name)."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['Kevin', 'Jenny', 'Niklas', 'Craig']\n"
]
}
],
"source": [
"z = ('Kevin', 'Niklas', 'Jenny', 'Craig')\n",
"print(sorted(z, key=lambda k: k[1]))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**count(item)** - returns count of an item"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n",
"2\n",
"1\n"
]
}
],
"source": [
"# string\n",
"x = 'hippo'\n",
"print(x.count('p'))\n",
"\n",
"# list\n",
"y = ['pig', 'cow', 'horse', 'cow']\n",
"print(y.count('cow'))\n",
"\n",
"# tuple\n",
"z = ('Kevin', 'Niklas', 'Jenny', 'Craig')\n",
"print(z.count('Kevin'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**index(item)** - returns the index of the first occurence of an item."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n",
"1\n",
"2\n"
]
}
],
"source": [
"# string\n",
"x = 'hippo'\n",
"print(x.index('p'))\n",
"\n",
"# list\n",
"y = ['pig', 'cow', 'horse', 'cow']\n",
"print(y.index('cow'))\n",
"\n",
"# tuple\n",
"z = ('Kevin', 'Niklas', 'Jenny', 'Craig')\n",
"print(z.index('Jenny'))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**unpacking** - unpack the n items of a sequence into n variables"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"pig cow horse\n"
]
}
],
"source": [
"x = ['pig', 'cow', 'horse']\n",
"a, b, c = x\n",
"print(a, b, c)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Lists \n",
"****\n",
"- General purpose\n",
"- Most widely used data structure \n",
"- Grow and shrink size as needed\n",
"- Sequence type\n",
"- Sortable \n",
"\n",
"**constructors** - creating a new list"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0, 1, 2, 3, 4, 5, 6, 7]\n",
"[25, 36, 49, 64, 81]\n"
]
}
],
"source": [
"x = list()\n",
"y = ['a', 25, 'dog', 8.43]\n",
"tuple1 = (10, 20)\n",
"z = list(tuple1)\n",
"\n",
"# list comprehension\n",
"a = [m for m in range(8)]\n",
"print(a)\n",
"b = [i**2 for i in range(10) if i>4]\n",
"print(b)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**delete** - delete a list or an item in a list"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5, 8, 6]\n"
]
}
],
"source": [
"x = [5, 3, 8, 6]\n",
"del(x[1])\n",
"print(x)\n",
"del(x) # list x no longer exists"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**append** - append an item to a list"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5, 3, 8, 6, 7]\n"
]
}
],
"source": [
"x = [5, 3, 8, 6]\n",
"x.append(7)\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**extend** - append a sequence to a list"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5, 3, 8, 6, 12, 13]\n"
]
}
],
"source": [
"x = [5, 3, 8, 6]\n",
"y = [12, 13]\n",
"x.extend(y)\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**insert** - insert an item at a given index"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5, 7, 3, 8, 6]\n",
"[5, ['a', 'm'], 7, 3, 8, 6]\n"
]
}
],
"source": [
"x = [5, 3, 8, 6]\n",
"x.insert(1, 7)\n",
"print(x)\n",
"x.insert(1, ['a', 'm'])\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**pop** - pops last item off list and returns item"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5, 3, 8]\n",
"8\n"
]
}
],
"source": [
"x = [5, 3, 8, 6]\n",
"x.pop() # pop off the 6\n",
"print(x)\n",
"print(x.pop())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**remove** - remove first instance of an item"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5, 8, 6, 3]\n"
]
}
],
"source": [
"x = [5, 3, 8, 6, 3]\n",
"x.remove(3)\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**reverse** - reverse the order of the list. It is an in-place sort, meaning it changes the original list."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[6, 8, 3, 5]\n"
]
}
],
"source": [
"x = [5, 3, 8, 6]\n",
"x.reverse()\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**sort** - sort the list in place. \n",
"Note: \n",
"sorted(x) returns a new sorted list without changing the original list x. \n",
"x.sort() puts the items of x in sorted order (sorts in place)."
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[3, 5, 6, 8]\n"
]
}
],
"source": [
"x = [5, 3, 8, 6]\n",
"x.sort()\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**reverse sort** - sort items descending. \n",
"Use *reverse=True* parameter to the sort function."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[8, 6, 5, 3]\n"
]
}
],
"source": [
"x = [5, 3, 8, 6]\n",
"x.sort(reverse=True)\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tuples\n",
"****\n",
"- Immutable (cant add/change)\n",
"- Useful for fixed data\n",
"- Faster than Lists\n",
"- Sequence type \n",
" \n",
"**constructors** - creating new tuples."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(2,) <class 'tuple'>\n",
"(2, 4, 6) <class 'tuple'>\n"
]
}
],
"source": [
"x = ()\n",
"x = (1, 2, 3)\n",
"x = 1, 2, 3\n",
"x = 2, # the comma tells Python it's a tuple\n",
"print(x, type(x))\n",
"\n",
"list1 = [2, 4, 6]\n",
"x = tuple(list1)\n",
"print(x, type(x))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**tuples are immutable**, but member objects may be mutable."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(1, 2, 3)\n",
"([1], 3)\n",
"([1], 3, 4)\n"
]
}
],
"source": [
"x = (1, 2, 3)\n",
"# del(x[1]) # fails\n",
"# x[1] = 8 # fails\n",
"print(x)\n",
"\n",
"y = ([1, 2], 3) # a tuple where the first item is a list\n",
"del(y[0][1]) # delete the 2\n",
"print(y) # the list within the tuple is mutable\n",
"\n",
"y += (4,) # concatenating two tuples works\n",
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Sets\n",
"****\n",
"- Store non-duplicate items \n",
"- Very fast access vs Lists \n",
"- Math Set ops (union, intersect) \n",
"- Sets are Unordered \n",
" \n",
"**constructors** - creating new sets"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{3, 5}\n",
"set()\n",
"{2, 3, 4}\n"
]
}
],
"source": [
"x = {3, 5, 3, 5}\n",
"print(x)\n",
"\n",
"y = set()\n",
"print(y)\n",
"\n",
"list1 = [2, 3, 4]\n",
"z = set(list1)\n",
"print(z)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**set operations**"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{8, 3, 5}\n",
"{8, 3, 5, 7}\n",
"{8, 5, 7}\n",
"3\n",
"True\n",
"8 {5, 7}\n",
"set()\n"
]
}
],
"source": [
"x = {3, 8, 5}\n",
"print(x)\n",
"x.add(7)\n",
"print(x)\n",
"\n",
"x.remove(3)\n",
"print(x)\n",
"\n",
"# get length of set x\n",
"print(len(x))\n",
"\n",
"# check membership in x\n",
"print(5 in x)\n",
"\n",
"# pop random item from set x\n",
"print(x.pop(), x)\n",
"\n",
"# delete all items from set x\n",
"x.clear()\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Mathematical set operations** \n",
"intersection (AND): set1 & set2 \n",
"union (OR): set1 | set2 \n",
"symmetric difference (XOR): set1 ^ set2 \n",
"difference (in set1 but not set2): set1 - set2 \n",
"subset (set2 contains set1): set1 <= set2 \n",
"superset (set1 contains set2): set1 >= set2"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{3}\n",
"{1, 2, 3, 4, 5}\n",
"{1, 2, 4, 5}\n",
"{1, 2}\n",
"False\n",
"False\n"
]
}
],
"source": [
"s1 = {1, 2, 3}\n",
"s2 = {3, 4, 5}\n",
"print(s1 & s2)\n",
"print(s1 | s2)\n",
"print(s1 ^ s2)\n",
"print(s1 - s2)\n",
"print(s1 <= s2)\n",
"print(s1 >= s2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Dictionaries (dict)\n",
"****\n",
"- Key/Value pairs\n",
"- Associative array, like Java HashMap\n",
"- Dicts are Unordered \n",
"\n",
"**constructors** - creating new dictionaries"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'pork': 25.3, 'beef': 33.8, 'chicken': 22.7}\n",
"{'pork': 25.3, 'beef': 33.8, 'chicken': 22.7}\n",
"{'pork': 25.3, 'beef': 33.8, 'chicken': 22.7}\n"
]
}
],
"source": [
"x = {'pork':25.3, 'beef':33.8, 'chicken':22.7}\n",
"print(x)\n",
"x = dict([('pork', 25.3),('beef', 33.8),('chicken', 22.7)])\n",
"print(x)\n",
"x = dict(pork=25.3, beef=33.8, chicken=22.7)\n",
"print(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**dict operations**"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{'pork': 25.3, 'beef': 33.8, 'chicken': 22.7, 'shrimp': 38.2}\n",
"{'pork': 25.3, 'beef': 33.8, 'chicken': 22.7}\n",
"3\n",
"{}\n"
]
}
],
"source": [
"x['shrimp'] = 38.2 # add or update\n",
"print(x)\n",
"\n",
"# delete an item\n",
"del(x['shrimp'])\n",
"print(x)\n",
"\n",
"# get length of dict x\n",
"print(len(x))\n",
"\n",
"# delete all items from dict x\n",
"x.clear()\n",
"print(x)\n",
"\n",
"# delete dict x\n",
"del(x)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**accessing keys and values in a dict** \n",
"Not compatible with Python 2."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"dict_keys(['pork', 'beef', 'chicken'])\n",
"dict_values([25.3, 33.8, 22.7])\n",
"dict_items([('pork', 25.3), ('beef', 33.8), ('chicken', 22.7)])\n",
"True\n",
"False\n"
]
}
],
"source": [
"y = {'pork':25.3, 'beef':33.8, 'chicken':22.7}\n",
"print(y.keys())\n",
"print(y.values())\n",
"print(y.items()) # key-value pairs\n",
"\n",
"# check membership in y_keys (only looks in keys, not values)\n",
"print('beef' in y)\n",
"\n",
"# check membership in y_values\n",
"print('clams' in y.values())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**iterating a dict** - note, items are in random order."
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"pork 25.3\n",
"beef 33.8\n",
"chicken 22.7\n",
"pork 25.3\n",
"beef 33.8\n",
"chicken 22.7\n"
]
}
],
"source": [
"for key in y:\n",
" print(key, y[key])\n",
" \n",
"for k, v in y.items():\n",
" print(k, v)"
]
},
{
"cell_type": "code",
"execution_count": null,
"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.7.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}