본문 바로가기

Python/Python 어렵게 배우기

Python 어렵게 배우기 - Exercise 39: Dictionaries, Oh Lovely Dictionaries

원문 : http://learnpythonthehardway.org/book/ex39.html


python 에는 Dictionary라는 놈이 있다. 간단히 이야기하면 Key : Value 형태로 데이터를 입력하는 Map 같은 놈이다.


사용 양식은

stuff = {'name': 'Zed', 'age': 36, 'height': 6*12+2}

뭐 이런식으로 사용 할 수 있다.



예제 코드를 통해 좀더 알아보자 (ex39.py)

# create a mapping of state to abbreviation
states = {
    'Oregon': 'OR',
    'Florida': 'FL',
    'California': 'CA',
    'New York': 'NY',
    'Michigan': 'MI'
}

# create a basic set of states and some cities in them
cities = {
    'CA': 'San Francisco',
    'MI': 'Detroit',
    'FL': 'Jacksonville'
}

# add some more cities
cities['NY'] = 'New York'
cities['OR'] = 'Portland'

# print out some cities
print '-' * 10
print "NY State has: ", cities['NY']
print "OR State has: ", cities['OR']

# print some states
print '-' * 10
print "Michigan's abbreviation is: ", states['Michigan']
print "Florida's abbreviation is: ", states['Florida']

# do it by using the state then cities dict
print '-' * 10
print "Michigan has: ", cities[states['Michigan']]
print "Florida has: ", cities[states['Florida']]

# print every state abbreviation
print '-' * 10
for state, abbrev in states.items():
    print "%s is abbreviated %s" % (state, abbrev)

# print every city in state
print '-' * 10
for abbrev, city in cities.items():
    print "%s has the city %s" % (abbrev, city)

# now do both at the same time
print '-' * 10
for state, abbrev in states.items():
    print "%s state is abbreviated %s and has city %s" % (
        state, abbrev, cities[abbrev])

print '-' * 10
# safely get a abbreviation by state that might not be there
state = states.get('Texas', None)

if not state:
    print "Sorry, no Texas."

# get a city with a default value
city = cities.get('TX', 'Does Not Exist')
print "The city for the state 'TX' is: %s" % city



알 수 있는 내용

1. dict 의 선언은 d = {"key" : "value", "k2" : "val2", ...} 형식으로 한다.

2. 특정 key의 value를 알고 싶을 때는 d[key] 하면 된다.

3. for key, value in d.items(): 형태로 사용 할 수 있다.

4. v = d.get(key, "값이 없을때") 형태로 사용할 수 있다. (sql에 nvl 같은 기능)



반응형