2016-10-18 2 views
2

사전 _dict과 변수 n이 있다고 가정합니다.사전에있는 기존 값을 업데이트하는 비 유적 방법

_dict = {'a': 9, 'b': 7, 'c': 'someValue'} 
n = 8 

예 : n 값이 b의 실제 값보다 큰 경우에만 {'b': 7}을 입력하십시오. 내가 가진 솔루션은 지금까지 {'a': 9, 'b': 8, 'c': 'someValue'}의 원하는 결과를 제공

_dict.update({'b': n for key, value in _dict.items() if key == 'b' and n > value}) 

입니다. 그래서 지금 내 질문에 : 더 짧은, pythonic 방법이 있나요? (바람직하게는 추가 모듈을 수입하지 않고)

+1

왜 새 사전을 만들어야합니까? 당신은'if' 조건으로 이것을 간단히 작성할 수 있습니다. – thefourtheye

+1

** 하나 ** 키에 대해 왜 루핑합니까? 간단하게 직접 액세스 할 수 있습니다. –

+0

@MartijnPieters @thefortheye 이전에'if' 절을 조건으로 단일 값을 업데이트하려고 시도했으나 그게 효과가 없어서 사전을 반복하는 데 신속히 이관되었습니다. (제 경우에는 사전에 문제가 없으므로 5-10 키). 하지만 귀하의 조언 덕분에 – heiiRa

답변

13

처럼 간단 : 위의

_dict['b'] = max(_dict['b'], n) 

'b'을 둘 중 가장 높은 값으로 설정합니다.

+0

이것은 내 두뇌가 너무 단순하지만, 내가 찾고있는 것입니다. 회고 적으로 나의 질문은 아주 바보 같다. 감사합니다 @Martijn Pieters! – heiiRa

1

그것의 당신은 단지 하나의 키 업데이트해야하는 경우 루프 아무 소용이 없다는 것을

if n > _dict['b']: 
    _dict['b'] = n 
+0

사실이긴하지만 1 라이너에서이 작은 동작을 수행 할 수 있어야한다고 생각했지만 제안 해 주셔서 감사합니다! – heiiRa

1
if n > _dict['b']: 
    _dict['b'] = n 
관련 문제