English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
fromkeys() 메서드는 주어진 요소 시퀀스를 기반으로 새 딕셔너리를 생성합니다. 이 딕셔너리는 사용자가 제공한 값으로 설정됩니다.
fromkeys() 메서드의 문법은 다음과 같습니다:
dictionary.fromkeys(sequence[, value])
fromkeys() 메서드는 두 개의 매개변수를 사용합니다:
sequence -새 딕셔너리 키로 사용할 요소 시퀀스
value(선택 사항) -딕셔너리의 각 요소에 설정된 값
fromkeys() 메서드는 주어진 요소 시퀀스로 키로 사용할 새 딕셔너리를 반환합니다.
value 매개변수가 설정되면, 새로 생성된 딕셔너리의 각 요소는 제공된 value 값으로 설정됩니다.
# 원음 키 keys = {'a', 'e', 'i', 'o', 'u'} vowels = dict.fromkeys(keys) print(vowels)
프로그램을 실행할 때, 출력은 다음과 같습니다:
{'a': None, 'u': None, 'o': None, 'e': None, 'i': None}
# 원음 키 keys = {'a', 'e', 'i', 'o', 'u'} value = 'vowel' vowels = dict.fromkeys(keys, value) print(vowels)
프로그램을 실행할 때, 출력은 다음과 같습니다:
{'a': 'vowel', 'u': 'vowel', 'o': 'vowel', 'e': 'vowel', 'i': 'vowel'}
# 원음 키 keys = {'a', 'e', 'i', 'o', 'u'} value = [1] vowels = dict.fromkeys(keys, value) print(vowels) # 갱신된 값 value.append(2) print(vowels)
프로그램을 실행할 때, 출력은 다음과 같습니다:
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1}] {'a': [1, 2], 'u': [1, 2], 'o': [1, 2], 'e': [1, 2], 'i': [1, 2}]
제공된 value가 변경 가능한 객체(값을 변경할 수 있습니다)라면, 예를 들어리스트,디�셔너리그리고, 시퀀스에서 변경 가능한 객체를 수정할 때, 시퀀스의 각 요소도 업데이트됩니다.
이는 각 요소에 동일한 객체에 대한 참조(메모리에 동일한 객체를 가리키는)를 할당하기 때문입니다.
이 문제를 피하기 위해, 딕셔너리 이해를 사용합니다.
# 원음 키 keys = {'a', 'e', 'i', 'o', 'u'} value = [1] vowels = { key : list(value) for key in keys } # 또한 { key : value[:] for key in keys } 사용 가능 print(vowels) # 갱신된 값 value.append(2) print(vowels)
프로그램을 실행할 때, 출력은 다음과 같습니다:
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1}] {'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1}]
여기서, keys의 각 키에 대해 value에서 새로운 목록을 생성하고 그것을 할당합니다.
본질적으로, value는 요소에 할당되지 않고, 대신 새로운 목록을 생성한 후 그것을 딕셔너리의 각 요소에 할당합니다.