한 때 사전에 해당 주요 항목 제거 알 수 없습니다.

가장 좋은 방법은 지정하십시오. 사전 항목 제거, 즉, s # 39 의 값에 의한 item& 때 중요한 것은 알 수 없는? # 39 의 here& 간단한 외곽진입:

for key, item in some_dict.items():
    if item is item_to_remove:
        del some_dict[key]

더 나은 방법을 있습니까? 다 문제가 사전 (삭제 항목) 를 억제하는 동시에 반복 it?

질문에 대한 의견 (2)

(키 [, 기본]) '이' 딕트스포프 방법을 알고 있을 때 항목에서와 키를 제거할 수 있습니다. 이 경우 해당 항목을 키 값을 되돌려줍니다 선수단 '기본' 로 지정하십시오. 되돌려줍니다 절감뿐만 그렇지 않으면 통과시켰다. [이 문서] [1] .& 지켜보리니 # 39.

예:

>>> dic = {'a':1, 'b':2}
>>> dic
{'a': 1, 'b': 2}
>>> dic.pop('c', 0)
0
>>> dic.pop('a', 0)
1
>>> dic
{'b': 2}

[1]: https://docs.python.org/3/library/stdtypes.html # 딕트스포프

해설 (1)
해결책

39 점을 유념하십시오 you& 현재 테스트 항목에 대한 정체성, re ('는' 만 되돌려줍니다 'True' 놓이지 않으면 피연산자로 표현됩니다 동일한 개체를 메모리에 - 항상 그런 것은 아니다 '=' 와 비교해서 같을 수 있는 두 개의 객체에는). 이렇게 할 경우 고의적으로요 관심용 코드에 따라 재작성할 수 있습니다.

some_dict = {key: value for key, value in some_dict.items() 
             if value is not value_to_remove}

하지만 이 그리웠댔지 할 수 없습니다.

>>> some_dict = {1: "Hello", 2: "Goodbye", 3: "You say yes", 4: "I say no"}
>>> value_to_remove = "You say yes"
>>> some_dict = {key: value for key, value in some_dict.items() if value is not value_to_remove}
>>> some_dict
{1: 'Hello', 2: 'Goodbye', 3: 'You say yes', 4: 'I say no'}
>>> some_dict = {key: value for key, value in some_dict.items() if value != value_to_remove}
>>> some_dict
{1: 'Hello', 2: 'Goodbye', 4: 'I say no'}

그래서 '=' 대신 '아니다'! 좋습니다.

해설 (5)
a = {'name': 'your_name','class': 4}
if 'name' in a: del a['name']
해설 (1)
        • 및 단순 비교한 델 (pop):
import timeit
code = """
results = {'A': 1, 'B': 2, 'C': 3}
del results['A']
del results['B']
"""
print timeit.timeit(code, number=100000)
code = """
results = {'A': 1, 'B': 2, 'C': 3}
results.pop('A')
results.pop('B')
"""
print timeit.timeit(code, number=100000)

결과:.

0.0329667857143
0.0451040902256

그래서, 팝 () 는 델 보다.

해설 (3)

39 i& 목록을 작성하고 필요한 키 제거 후 저들이요 제거하시겠습니까; d # 39 의 it& 대한 이 모든 문제를 놓고 반복 딕트 억제하는 동시에 간편하고 효율적인 예상되고 있습니다.

keys_to_remove = [key for key, value in some_dict.iteritems()
                  if value == value_to_remove]
for key in keys_to_remove:
    del some_dict[key]
해설 (1)

'항목 ()' 이 목록에 있는 것인데, 이 때문에 바뀌엇어요 되돌려줍니다 루프의 반복 틀렸다니까 딕트 억제하는 것은 목마르겠구나 doesn& # 39, t () '대신' 를 사용한 경우 아리트마스 딕트 억제하는 루프의 [문제가 될지] [1] "에 대한, 그리고 거짓하였으니 비비템스 () '의 파이썬 2.7.

내가 can& # 39 의 값에 의해, 더 나은 방법은 딕트 항목을 제거할 것 같지는 않다.

[1]: http://docs.python.org/library/stdtypes.html # 딕트스트리트마스

해설 (0)

c 는 {& # 39 는 새 사전에, 그리고 기존 사전을 # 39, & # 39,, z& w& # 39;} 제거할 시동키는 있다.

c = {key:a[key] for key in a.keys() - {'z', 'w'}}

또한 확인: /ch01.html https://www.safaribooksonline.com/library/view/python-cookbook-3rd/ 9781449357337

해설 (0)
y={'username':'admin','machine':['a','b','c']}
if 'c' in y['machine'] : del y['machine'][y['machine'].index('c')]
해설 (0)

별 문제가 항목을 삭제하는 등 you& 사전에서 낼수있지않나 반복 # 39, ve 제기했다. 조심해 다중 스레드를 동시에 같은 사전, 또는 다른 문제가 발생할 수 있는 케이에로.

물론 http://support. http://docs.python.org/library/stdtypes.html # 티페스마핑 문서 참조)

해설 (2)

This is how I would do it.

for key in some_dict.keys():
    if some_dict[key] == item_to_remove:
        some_dict.pop(key)
        break
해설 (0)