사전

사전은 구조화된 데이터를 저장하는 데 좋습니다. 키/값 쌍이 있으므로 특정 키의 값을 조회할 수 있습니다. 저자는 다소 파이썬적인 것에 대한 주석과 함께 사전을 초기화하는 몇 가지 방법을 제공합니다.
dictionaries로 할 수 있는 작업 중 일부는 쿼리 키, 값, 새 키/값 쌍 할당, 키 존재 확인 또는 특정 값 검색입니다.


empty_dict = {}                   # most pythonic
empty_dict2 = dict()              # less pythonic
grades = {"Joel": 80, "Grus": 99} # dictionary literal

type(grades)  # type check, dict

# use bracket to look up values
grades["Grus"]  # 99
grades["Joel"]  # 80

# KeyError for looking up non-existent keys
try:
   kate_grades = grades["Kate"]
except KeyError:
   print("That key doesn't exist")

# use in operator to check existence of key
joe_has_grade = "Joel" in grades  
joe_has_grade # true

kate_does_not = "Kate" in grades
kate_does_not # false

# use 'get' method to get values in dictionaries
grades.get("Joel") # 80
grades.get("Grus") # 99
grades.get("Kate") # default: None

# assign new key/value pair using brackets
grades["Tim"] = 93

grades # {'Joel': 80, 'Grus': 99, 'Tim': 93}



사전은 쿼리할 수 있는 구조화된 데이터를 나타내는 데 유용합니다. 여기서 중요한 점은 dictionaries 를 반복하여 keys , values 또는 둘 다를 얻으려면 keys() , values() 또는 items() 와 같은 특정 메서드를 사용해야 한다는 것입니다.


tweet = {
    "user": "paulapivat",
    "text": "Reading Data Science from Scratch",
    "retweet_count": 100,
    "hashtags": ["#66daysofdata", "datascience", "machinelearning", "python", "R"]
    }

# query specific values
tweet["retweet_count"] # 100

# query values within a list
tweet["hashtags"] # ['#66daysofdata', 'datascience', 'machinelearning', 'python', 'R']
tweet["hashtags"][2] # 'machinelearning'

# retrieve ALL keys
tweet_keys = tweet.keys()
tweet_keys              # dict_keys(['user', 'text', 'retweet_count', 'hashtags'])
type(tweet_keys)        # different data type: dict != dict_keys

# retrieve ALL values
tweet_values = tweet.values() 
tweet_values  # dict_values(['paulapivat', 'Reading Data Science from Scratch', 100, ['#66daysofdata', 'datascience', 'machinelearning', 'python', 'R']])

type(tweet_values)      # different data type: dict != dict_values

# create iterable for Key-Value pairs (in tuple)
tweet_items = tweet.items()

# iterate through tweet_items()
for key,value in tweet_items:
    print("These are the keys:", key)
    print("These are the values:", value)

# cannot iterate through original tweet dictionary
# ValueError: too many values to unpack (expected 2)
for key, value in tweet:
    print(key)

# cannot use 'enumerate' because that only provides index and key (no value)
for key, value in enumerate(tweet):
    print(key)   # print 0 1 2 3 - index values
    print(value) # user text retweet_count hashtags (incorrectly print keys)

liststuples 와 마찬가지로 in 연산자를 사용하여 구성원을 찾을 수 있습니다. 한 가지 주의할 점은 대괄호 표기법을 사용하지 않는 한 lists 에 있는 값을 조회할 수 없다는 것입니다.


# search keys
"user" in tweet # true
"bball" in tweet # false

"paulapivat" in tweet_values # true
'python' in tweet_values # false (python is nested in 'hashtags')
"hashtags" in tweet  # true

# finding values inside a list requires brackets to help
'python' in tweet['hashtags']  # true



해시 가능 여부는 무엇입니까?
Dictionary 키는 해시 가능해야 합니다.
Strings는 해시 가능합니다. 따라서 사전 키로 strings를 사용할 수 있지만 해시 가능하지 않기 때문에 lists를 사용할 수 없습니다.


paul = "paul"
type(paul)        # check type, str

hash(paul)        # -3897810863245179227 ; strings are hashable
paul.__hash__()   # -3897810863245179227 ; another way to find the hash

jake = ['jake']   # this is a list
type(jake)        # check type, list

# lists are not hashable - cannot be used as dictionary keys
try:
   hash(jake)
except TypeError:
   print('lists are not hashable')




데이터 과학, 기계 학습, R, Python, SQL 등에 대한 자세한 내용은 .

좋은 웹페이지 즐겨찾기