2013-08-20 3 views
1

나는 사전은 다음과 같이 찾고 있습니다.파이썬 사전 업데이트 및 추가는

[ii,pp]과 함께 "김"을 추가하고 싶습니다.

나는 두 개의 솔루션을 가지고 있는데, 더 나은 것이 있습니까? 어떻게하면됩니까?

편집 :

array ={} 
    if not name in array : 
     array = array, {name : {()}} 
    if not (value1,value2,rate) in array[name] : 
     array.update({(value1,value2,rate)}) 

답변

2

사용 defaultdict

>>> from collections import defaultdict 
>>> d = defaultdict(list) # create the dictionary, then populate it. 
>>> d.update({"TIM":[['xx', 'yy'], ['aa', 'bb']], "SAM":[['yy', 'cc']]}) 
>>> d # see its what you wanted. 
defaultdict(<type 'list'>, {'TIM': [['xx', 'yy'], ['aa', 'bb']], 'SAM': [['yy', 'cc']]}) 
>>> d["SAM"].append(['tt','uu']) # add more items to SAM 
>>> d["KIM"].append(['ii','pp']) # create and add to KIM 
>>> d # see its what you wanted. 
defaultdict(<type 'list'>, {'TIM': [['xx', 'yy'], ['aa', 'bb']], 'KIM': [['ii', 'pp']], 'SAM': [['yy', 'cc'], ['tt', 'uu']]}) 

당신이 세트로 사전 값을 원하는 경우에, 그것은 문제가되지 않습니다 :

>>> from collections import defaultdict 
>>> d = defaultdict(set) 
>>> d.update({"TIM":set([('xx', 'yy'), ('aa', 'bb')]), "SAM":set([('yy', 'cc')])}) 
>>> d["SAM"].add(('tt','uu')) 
>>> d["KIM"].add(('ii','pp')) 
>>> d 
defaultdict(<type 'set'>, {'TIM': set([('xx', 'yy'), ('aa', 'bb')]), 'KIM': set([('ii', 'pp')]), 'SAM': set([('tt', 'uu'), ('yy', 'cc')])}) 
1

사용할 수는 setdefault 방법 :

>>> d = {'TIM':[['xx', 'yy'], ['aa', 'bb']], 'SAM':[['yy', 'cc']]} 
>>> d.setdefault('SAM', []).append(['tt','uu']) 
>>> d.setdefault('KIM', []).append(['ii','pp']) 
>>> d 
{'TIM': [['xx', 'yy'], ['aa', 'bb']], 'KIM': [['ii', 'pp']], 'SAM': [['yy', 'cc'], ['tt', 'uu']]}