nanotech example copyright © software carpentry 2010 this work is licensed under the creative...
TRANSCRIPT
![Page 1: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/1.jpg)
Nanotech Example
Copyright © Software Carpentry 2010
This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.
Sets and Dictionaries
![Page 2: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/2.jpg)
Sets and Dictionaries Nanotech Example
How many molecules of different kinds can we
make using the atoms in our warehouse?
![Page 3: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/3.jpg)
Sets and Dictionaries Nanotech Example
How many molecules of different kinds can we
make using the atoms in our warehouse?
# Molecular formula file
helium : He 1water : H 2 O 1hydrogen : H 2
![Page 4: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/4.jpg)
Sets and Dictionaries Nanotech Example
How many molecules of different kinds can we
make using the atoms in our warehouse?
# Molecular formula file
helium : He 1water : H 2 O 1hydrogen : H 2
# Atom inventory file
He 1H 4O 3
![Page 5: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/5.jpg)
Sets and Dictionaries Nanotech Example
How many molecules of different kinds can we
make using the atoms in our warehouse?
# Molecular formula file
helium : He 1water : H 2 O 1hydrogen : H 2
# Atom inventory file
He 1H 4O 3
Now have all the tools we need
![Page 6: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/6.jpg)
Sets and Dictionaries Nanotech Example
Natural to represent inventory as dictionary
![Page 7: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/7.jpg)
Sets and Dictionaries Nanotech Example
Natural to represent inventory as dictionary
Keys: atomic symbols
![Page 8: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/8.jpg)
Sets and Dictionaries Nanotech Example
Natural to represent inventory as dictionary
Keys: atomic symbols
Values: number of atoms available
![Page 9: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/9.jpg)
Sets and Dictionaries Nanotech Example
Natural to represent inventory as dictionary
Keys: atomic symbols
Values: number of atoms available
'He'
'O'
'H'1
3
4
![Page 10: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/10.jpg)
Sets and Dictionaries Nanotech Example
Represent individual molecules the same way
![Page 11: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/11.jpg)
Sets and Dictionaries Nanotech Example
Represent individual molecules the same way
'O'
'H'
1
2
water
![Page 12: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/12.jpg)
Sets and Dictionaries Nanotech Example
Store formulas as a dictionary of dictionaries
![Page 13: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/13.jpg)
Sets and Dictionaries Nanotech Example
Store formulas as a dictionary of dictionaries
Keys: molecule names
![Page 14: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/14.jpg)
Sets and Dictionaries Nanotech Example
Store formulas as a dictionary of dictionaries
Keys: molecule names
Values: dictionaries of formulas
![Page 15: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/15.jpg)
Sets and Dictionaries Nanotech Example
Store formulas as a dictionary of dictionaries
Keys: molecule names
Values: dictionaries of formulas
'water'
'ammonia'
![Page 16: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/16.jpg)
Sets and Dictionaries Nanotech Example
Number of molecules that can be made is:
minavailable[atom]
required[atom]
atom ∈ formula
![Page 17: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/17.jpg)
Sets and Dictionaries Nanotech Example
Number of molecules that can be made is:
minavailable[atom]
required[atom]
atom ∈ formulaIf atom not in available, its count is implicitly 0
![Page 18: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/18.jpg)
Sets and Dictionaries Nanotech Example
Number of molecules that can be made is:
minavailable[atom]
required[atom]
atom ∈ formulaIf atom not in available, its count is implicitly 0
Store results in yet another dictionary
![Page 19: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/19.jpg)
Sets and Dictionaries Nanotech Example
Number of molecules that can be made is:
minavailable[atom]
required[atom]
atom ∈ formulaIf atom not in available, its count is implicitly 0
Store results in yet another dictionary
Keys: molecule names
![Page 20: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/20.jpg)
Sets and Dictionaries Nanotech Example
Number of molecules that can be made is:
minavailable[atom]
required[atom]
atom ∈ formulaIf atom not in available, its count is implicitly 0
Store results in yet another dictionary
Keys: molecule names
Values: counts of how many can be made
![Page 21: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/21.jpg)
Sets and Dictionaries Nanotech Example
'''Calculate how many molecules of each type can be madewith the atoms on hand.'''
import sys
if __name__ == '__main__': inventory = read_inventory(sys.argv[1]) formulas = read_formulas(sys.argv[2]) counts = calculate_counts(inventory, formulas) show_counts(counts)
![Page 22: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/22.jpg)
Sets and Dictionaries Nanotech Example
def read_inventory(filename): '''Read inventory of available atoms.'''
result = {} for line in read_lines(filename): name, count = line.split(' ') result[name] = int(count)
return result
![Page 23: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/23.jpg)
Sets and Dictionaries Nanotech Example
def read_lines(filename): '''Read lines from file, stripping out blank lines and comments.'''
reader = open(filename, 'r') lines = [] for line in reader: line = line.split('#')[0].strip() if line: lines.append(line) reader.close()
return lines
![Page 24: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/24.jpg)
Sets and Dictionaries Nanotech Example
def read_formulas(filename): '''Read molecular formulas from file.'''
result = {} for line in read_lines(filename):
name, atoms = line.split(':') name = name.strip()
atoms = atoms.strip().split(' ') formula = {} for i in range(0, len(atoms), 2): formula[atoms[i]] = int(atoms[i+1])
result[name] = formula
return result
![Page 25: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/25.jpg)
Sets and Dictionaries Nanotech Example
def read_formulas(filename): '''Read molecular formulas from file.'''
result = {} for line in read_lines(filename):
name, atoms = line.split(':') name = name.strip()
atoms = atoms.strip().split(' ') formula = {} for i in range(0, len(atoms), 2): formula[atoms[i]] = int(atoms[i+1])
result[name] = formula
return result
Storing results
in dictionary
![Page 26: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/26.jpg)
Sets and Dictionaries Nanotech Example
def read_formulas(filename): '''Read molecular formulas from file.'''
result = {} for line in read_lines(filename):
name, atoms = line.split(':') name = name.strip()
atoms = atoms.strip().split(' ') formula = {} for i in range(0, len(atoms), 2): formula[atoms[i]] = int(atoms[i+1])
result[name] = formula
return result
For each
interesting
line in the
input file...
![Page 27: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/27.jpg)
Sets and Dictionaries Nanotech Example
def read_formulas(filename): '''Read molecular formulas from file.'''
result = {} for line in read_lines(filename):
name, atoms = line.split(':') name = name.strip()
atoms = atoms.strip().split(' ') formula = {} for i in range(0, len(atoms), 2): formula[atoms[i]] = int(atoms[i+1])
result[name] = formula
return result
Separate the
molecule name
and the formula
![Page 28: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/28.jpg)
Sets and Dictionaries Nanotech Example
def read_formulas(filename): '''Read molecular formulas from file.'''
result = {} for line in read_lines(filename):
name, atoms = line.split(':') name = name.strip()
atoms = atoms.strip().split(' ') formula = {} for i in range(0, len(atoms), 2): formula[atoms[i]] = int(atoms[i+1])
result[name] = formula
return result
Separate the
atoms and
their counts
![Page 29: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/29.jpg)
Sets and Dictionaries Nanotech Example
def read_formulas(filename): '''Read molecular formulas from file.'''
result = {} for line in read_lines(filename):
name, atoms = line.split(':') name = name.strip()
atoms = atoms.strip().split(' ') formula = {} for i in range(0, len(atoms), 2): formula[atoms[i]] = int(atoms[i+1])
result[name] = formula
return result
Loop over pairs
of atoms and
counts
![Page 30: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/30.jpg)
Sets and Dictionaries Nanotech Example
def read_formulas(filename): '''Read molecular formulas from file.'''
result = {} for line in read_lines(filename):
name, atoms = line.split(':') name = name.strip()
atoms = atoms.strip().split(' ') formula = {} for i in range(0, len(atoms), 2): formula[atoms[i]] = int(atoms[i+1])
result[name] = formula
return result
Store the count
as an integer
with the atomic
symbol as key
![Page 31: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/31.jpg)
Sets and Dictionaries Nanotech Example
def read_formulas(filename): '''Read molecular formulas from file.'''
result = {} for line in read_lines(filename):
name, atoms = line.split(':') name = name.strip()
atoms = atoms.strip().split(' ') formula = {} for i in range(0, len(atoms), 2): formula[atoms[i]] = int(atoms[i+1])
result[name] = formula
return result
And store the
molecule in
the main
dictionary
![Page 32: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/32.jpg)
Sets and Dictionaries Nanotech Example
def calculate_counts(inventory, formulas): '''Calculate how many of each molecule can be made with inventory.'''
counts = {} for name in formulas: counts[name] = dict_divide(inventory, formulas[name])
return counts
![Page 33: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/33.jpg)
Sets and Dictionaries Nanotech Example
def calculate_counts(inventory, formulas): '''Calculate how many of each molecule can be made with inventory.'''
counts = {} for name in formulas: counts[name] = dict_divide(inventory, formulas[name])
return countsSub-dictionary
holding
atom counts for a
particular molecule
![Page 34: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/34.jpg)
Sets and Dictionaries Nanotech Example
def calculate_counts(inventory, formulas): '''Calculate how many of each molecule can be made with inventory.'''
counts = {} for name in formulas: counts[name] = dict_divide(inventory, formulas[name])
return counts
Big functions: nothing is obviously wrong
![Page 35: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/35.jpg)
Sets and Dictionaries Nanotech Example
def calculate_counts(inventory, formulas): '''Calculate how many of each molecule can be made with inventory.'''
counts = {} for name in formulas: counts[name] = dict_divide(inventory, formulas[name])
return counts
Big functions: nothing is obviously wrong
Small functions: obviously, nothing is wrong
![Page 36: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/36.jpg)
Sets and Dictionaries Nanotech Example
def dict_divide(inventory, molecule): '''Calculate how much of a single molecule can be made with inventory.'''
number = None for atom in molecule: required = molecule[atom] available = inventory.get(atom, 0) limit = available / required if (number is None) or (limit < number): number = limit
return number
![Page 37: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/37.jpg)
Sets and Dictionaries Nanotech Example
def dict_divide(inventory, molecule): '''Calculate how much of a single molecule can be made with inventory.'''
number = None for atom in molecule: required = molecule[atom] available = inventory.get(atom, 0) limit = available / required if (number is None) or (limit < number): number = limit
return number
Identical
format:
keys are atoms,
values are
counts
![Page 38: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/38.jpg)
Sets and Dictionaries Nanotech Example
def dict_divide(inventory, molecule): '''Calculate how much of a single molecule can be made with inventory.'''
number = None for atom in molecule: required = molecule[atom] available = inventory.get(atom, 0) limit = available / required if (number is None) or (limit < number): number = limit
return numberCommon pattern:
None
means "uninitialized",
so initialize the first
time through the loop
![Page 39: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/39.jpg)
Sets and Dictionaries Nanotech Example
def dict_divide(inventory, molecule): '''Calculate how much of a single molecule can be made with inventory.'''
number = None for atom in molecule: required = molecule[atom] available = inventory.get(atom, 0) limit = available / required if (number is None) or (limit < number): number = limit
return numberCommon pattern:
stored value or
default
![Page 40: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/40.jpg)
Sets and Dictionaries Nanotech Example
def dict_divide(inventory, molecule): '''Calculate how much of a single molecule can be made with inventory.'''
number = None for atom in molecule: required = molecule[atom] available = inventory.get(atom, 0) limit = available / required if (number is None) or (limit < number): number = limit
return number Common pattern:
find minimum of
calculated values
![Page 41: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/41.jpg)
Sets and Dictionaries Nanotech Example
def show_counts(counts): '''Show how many of each molecule can be made.'''
counts = invert_dict(counts) for key in sorted(counts.keys(), reverse=True): for name in sorted(counts[key]): print key, name
![Page 42: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/42.jpg)
Sets and Dictionaries Nanotech Example
def show_counts(counts): '''Show how many of each molecule can be made.'''
counts = invert_dict(counts) for key in sorted(counts.keys(), reverse=True): for name in sorted(counts[key]): print key, name
Reverse to get
greatest first
![Page 43: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/43.jpg)
Sets and Dictionaries Nanotech Example
def invert_dict(src): '''Invert a dictionary, returning value->set{key}.'''
dst = {} for key in src: value = src[key] if value not in dst: dst[value] = set() dst[value].add(key)
return dst
![Page 44: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/44.jpg)
Sets and Dictionaries Nanotech Example
def invert_dict(src): '''Invert a dictionary, returning value->set{key}.'''
dst = {} for key in src: value = src[key] if value not in dst: dst[value] = set() dst[value].add(key)
return dstCommon pattern:
make sure there's a
collection, then add
![Page 45: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/45.jpg)
Sets and Dictionaries Nanotech Example
def show_counts(counts): '''Show how many of each molecule can be made.'''
counts = invert_dict(counts) for key in sorted(counts.keys(), reverse=True): if key > 0: for name in sorted(counts[key]): print key, name
Go back and only
show molecules that
can actually be made
![Page 46: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/46.jpg)
Sets and Dictionaries Nanotech Example
# inventory-00.txt # formulas-01.txt
helium : He 1
No output, which is correct.
![Page 47: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/47.jpg)
Sets and Dictionaries Nanotech Example
1 helium
# inventory-01.txtHe 1
# formulas-01.txt
helium : He 1
![Page 48: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/48.jpg)
Sets and Dictionaries Nanotech Example
1 helium
# inventory-02.txtHe 1H 4
# formulas-01.txt
helium : He 1
![Page 49: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/49.jpg)
Sets and Dictionaries Nanotech Example
1 helium
# inventory-02.txtHe 1H 4
# formulas-02.txt
helium : He 1water : H 2 O 1
![Page 50: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/50.jpg)
Sets and Dictionaries Nanotech Example
2 hydrogen
1 helium
# inventory-02.txtHe 1H 4
# formulas-03.txt
helium : He 1water : H 2 O 1hydrogen : H 2
![Page 51: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/51.jpg)
Sets and Dictionaries Nanotech Example
2 hydrogen
2 water
1 helium
# inventory-03.txtHe 1H 4O 3
# formulas-03.txt
helium : He 1water : H 2 O 1hydrogen : H 2
![Page 52: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/52.jpg)
Sets and Dictionaries Nanotech Example
2 hydrogen
2 water
1 helium
# inventory-03.txtHe 1H 4O 3
# formulas-03.txt
helium : He 1water : H 2 O 1hydrogen : H 2
Looks good...
![Page 53: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/53.jpg)
Sets and Dictionaries Nanotech Example
2 hydrogen
2 water
1 helium
# inventory-03.txtHe 1H 4O 3
# formulas-03.txt
helium : He 1water : H 2 O 1hydrogen : H 2
Looks good...
Code is much simpler than it would be using
lists of pairs
![Page 54: Nanotech Example Copyright © Software Carpentry 2010 This work is licensed under the Creative Commons Attribution License See](https://reader034.vdocument.in/reader034/viewer/2022051621/56649e9f5503460f94ba1e1a/html5/thumbnails/54.jpg)
June 2010
created by
Greg Wilson
Copyright © Software Carpentry 2010
This work is licensed under the Creative Commons Attribution License
See http://software-carpentry.org/license.html for more information.