파이썬 사전을 만든 후에 키를 파이썬 사전에 추가 할 수 있습니까?
방법이없는 것 같습니다 .add()
.
답변
d = {'key': 'value'}
print(d)
# {'key': 'value'}
d['mynewkey'] = 'mynewvalue'
print(d)
# {'key': 'value', 'mynewkey': 'mynewvalue'}
답변
여러 키를 동시에 추가하려면 dict.update()
다음을 사용하십시오 .
>>> x = {1:2}
>>> print(x)
{1: 2}
>>> d = {3:4, 5:6, 7:8}
>>> x.update(d)
>>> print(x)
{1: 2, 3: 4, 5: 6, 7: 8}
단일 키를 추가하는 경우 허용되는 답변의 계산 오버 헤드가 줄어 듭니다.
답변
파이썬 사전에 대한 정보를 통합하고 싶습니다.
빈 사전 만들기
data = {}
# OR
data = dict()
초기 값으로 사전 만들기
data = {'a': 1, 'b': 2, 'c': 3}
# OR
data = dict(a=1, b=2, c=3)
# OR
data = {k: v for k, v in (('a', 1), ('b',2), ('c',3))}
단일 값 삽입 / 업데이트
data['a'] = 1 # Updates if 'a' exists, else adds 'a'
# OR
data.update({'a': 1})
# OR
data.update(dict(a=1))
# OR
data.update(a=1)
여러 값 삽입 / 업데이트
data.update({'c':3,'d':4}) # Updates 'c' and adds 'd'
원본을 수정하지 않고 병합 된 사전 만들기
data3 = {}
data3.update(data) # Modifies data3, not data
data3.update(data2) # Modifies data3, not data2
사전에서 항목 삭제
del data[key] # Removes specific element in a dictionary
data.pop(key) # Removes the key & returns the value
data.clear() # Clears entire dictionary
키가 이미 사전에 있는지 확인
key in data
사전에서 쌍을 반복
for key in data: # Iterates just through the keys, ignoring the values
for key, value in d.items(): # Iterates through the pairs
for key in d.keys(): # Iterates just through key, ignoring the values
for value in d.values(): # Iterates just through value, ignoring the keys
두 목록에서 사전 만들기
data = dict(zip(list_with_keys, list_with_values))
Python 3.5를 처음 사용함
원본을 수정하지 않고 병합 된 사전 만들기 :
사전 언 패킹 이라는 새로운 기능을 사용합니다 .
data = {**data1, **data2, **data3}
Python 3.9의 새로운 기능
기존 사전에 대한 값 업데이트 또는 추가
업데이트 운영자는 |=
이제 사전 작동 :
data |= {'c':3,'d':4}
원본을 수정하지 않고 병합 된 사전 만들기
병합 연산자는 |
이제 사전 작동 :
data = data1 | {'c':3,'d':4}
더 추가하십시오!
답변
“파이썬 사전을 만든 후에 키를 추가 할 수 있습니까? .add () 메소드가없는 것 같습니다.”
예, 가능하며이를 구현하는 메소드가 있지만 직접 사용하고 싶지는 않습니다.
사용법과 사용하지 않는 방법을 보여주기 위해 dict 리터럴을 사용하여 빈 dict를 작성하십시오 {}
.
my_dict = {}
모범 사례 1 : 첨자 표기법
하나의 새 키와 값으로이 dict를 업데이트하려면 항목 할당을 제공 하는 아래 첨자 표기법 (여기에서 매핑 참조) 을 사용 하십시오 .
my_dict['new key'] = 'new value'
my_dict
지금 :
{'new key': 'new value'}
모범 사례 2 : update
방법-2 가지 방법
또한 이 update
방법을 사용하여 여러 값으로 dict를 효율적으로 업데이트 할 수도 있습니다 . 우리는 불필요하게 dict
여기에 여분의 것을 만들 수 있으므로 , 우리 dict
는 이미 다른 목적으로 만들어 졌거나 사용 되기를 바랍니다 .
my_dict.update({'key 2': 'value 2', 'key 3': 'value 3'})
my_dict
지금 :
{'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value'}
update 메소드를 사용 하여이 작업을 수행하는 또 다른 효율적인 방법은 키워드 인수를 사용하는 것입니다.하지만 합법적 인 파이썬 단어 여야하므로 공백이나 특수 기호를 사용하거나 숫자로 이름을 시작할 수 없지만 많은 사람들이이를 더 읽기 쉬운 방법으로 생각합니다 dict에 대한 키를 작성하려면 여기에 불필요한 추가 작성을 피하십시오 dict
.
my_dict.update(foo='bar', foo2='baz')
그리고 my_dict
지금 :
{'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value',
'foo': 'bar', 'foo2': 'baz'}
이제 우리는을 업데이트하는 세 가지 파이썬 방식을 다루었습니다 dict
.
마술 방법 __setitem__
과 피해야하는 이유
dict
사용하지 말아야 할 방법을 업데이트하는 또 다른 방법이 있습니다 __setitem__
. 다음은이 __setitem__
방법을 사용하여 키-값 쌍을에 추가하는 방법 dict
과이를 사용하는 성능이 좋지 않음을 보여주는 예입니다.
>>> d = {}
>>> d.__setitem__('foo', 'bar')
>>> d
{'foo': 'bar'}
>>> def f():
... d = {}
... for i in xrange(100):
... d['foo'] = i
...
>>> def g():
... d = {}
... for i in xrange(100):
... d.__setitem__('foo', i)
...
>>> import timeit
>>> number = 100
>>> min(timeit.repeat(f, number=number))
0.0020880699157714844
>>> min(timeit.repeat(g, number=number))
0.005071878433227539
따라서 아래 첨자 표기법을 사용하는 것이 실제로 사용하는 것보다 훨씬 빠릅니다 __setitem__
. 파이썬적인 일을하는 것, 즉 사용되는 방식으로 언어를 사용하는 것은 일반적으로 더 읽기 쉽고 계산적으로 효율적입니다.
답변
dictionary[key] = value
답변
사전 내에 사전을 추가하려면이 방법으로 사전을 추가 할 수 있습니다.
예 : 사전 및 하위 사전에 새 항목 추가
dictionary = {}
dictionary["new key"] = "some new entry" # add new dictionary entry
dictionary["dictionary_within_a_dictionary"] = {} # this is required by python
dictionary["dictionary_within_a_dictionary"]["sub_dict"] = {"other" : "dictionary"}
print (dictionary)
산출:
{'new key': 'some new entry', 'dictionary_within_a_dictionary': {'sub_dict': {'other': 'dictionarly'}}}
참고 : 파이썬은 먼저 하위를 추가해야합니다
dictionary["dictionary_within_a_dictionary"] = {}
항목을 추가하기 전에.
답변
정통 구문은 d[key] = value
이지만 키보드에 대괄호 키가없는 경우 다음을 수행 할 수 있습니다.
d.__setitem__(key, value)
실제로, 정의 __getitem__
와 __setitem__
메소드는 클래스가 대괄호 구문을 지원하도록하는 방법입니다. https://python.developpez.com/cours/DiveIntoPython/php/endiveintopython/object_oriented_framework/special_class_methods.php를 참조 하십시오