[python] 사전에 새 키를 추가하려면 어떻게해야합니까?

파이썬 사전을 만든 후에 키를 파이썬 사전에 추가 할 수 있습니까?

방법이없는 것 같습니다 .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를 참조 하십시오