python 2 차원 사전 의 키 값 통합 등 함수 구현
(1)2 차원 사전 의 키 값 통합:
먼저 응용 장면 을 제공 합 니 다:
내 가 2 차원 사전 이 있다 고 가정 하면:
room1 = {orderid1:{roomid1:pred1,roomid2:pred2},orderid2:{roomid3:pred3,roomid4:pred4}}
room2 = {orderid1:{roomid1:pred5,roomid2:pred6},orderid2:{roomid3:pred7,roomid4:pred8}}
이 두 사전 의 key 는 같 습 니 다.2 차원 의 value 만 다 릅 니 다.제 목적 은 이 두 사전 의 value 를 더 해서 얻 은 결 과 는 다음 과 같 습 니 다.
sum_room = {orderid1:{roomid1:pred1+pred5,roomid2:pred2+pred6},orderid2:{roomid3:pred3+pred7,roomid4:pred4+pred8}}
구체 적 인 실현 코드 는 다음 과 같다.(유 니 버 설 성 을 높이 기 위해 다음 코드 는 두 개의 간단 한 사전 obj 3,obj 4 를 만 들 었 다)2 차원 사전 의 키 값 통합 을 실현 합 니 다.같은 key 아래 의 value 를 추가 할 것 입 니 다:
사고방식:먼저 빈 사전 all 만 들 기room,allroom 과 obj 의 value 를 더 해서 allroom:
from collections import defaultdict
all_room = defaultdict(defaultdict)
obj3 = {'a':{'aa':1,'aa1':2},'b':{'bb':2},'c':3}
obj4 = {'a': {'aa': 5, 'aa1': 6}, 'b': {'bb': 7}, 'c': 8}
def sum_value(obj):
for key in obj:
if type(obj[key]).__name__ == 'dict':
if key not in all_room:
all_room[key] = {}
for subkey in obj[key]:
if subkey not in all_room[key]:
all_room[key][subkey] = 0
all_room[key][subkey] += obj[key][subkey]
else:
if key not in all_room:
all_room[key] = 0
all_room[key] += obj[key]
return all_room
결 과 를 살 펴 보 자.
sum_value(obj3)
Out[40]:
defaultdict(collections.defaultdict,
{'a': {'aa': 1, 'aa1': 2}, 'b': {'bb': 2}, 'c': 3})
sum_value(obj4)
Out[41]:
defaultdict(collections.defaultdict,
{'a': {'aa': 6, 'aa1': 8}, 'b': {'bb': 9}, 'c': 11})
글 의 첫머리 에 서술 한 기능 을 실현 하 였 다.sum_value(obj)이 함 수 는 여러 개의 2 차원 사전 에 대한 키 값 을 추가 할 수 있 습 니 다.for 순환 만 만 만 들 면 됩 니 다.
(2)사전 키 에 새 value 추가 하기:
같은 응용 장면 을 제공 합 니 다:
dict1 = {'order1': ['room1', 'room1'],'order2': ['room3', 'room3']}
dict2 = {'order1': 'room2', 'order2': 'room3'}
제 목적 은 dict 2 의 key 에 있 는 value 를 dict 1 의 같은 key 에 추가 하 는 것 입 니 다.이상 적 인 결 과 는 다음 과 같 습 니 다.
dict1 = {'order1': ['room1', 'room1', 'room2'], 'order2': ['room3', 'room3', 'room3']}
다음 구현 코드 를 드 립 니 다:
for key in dict1.keys():
a=[]
b=[]
b = dict1[key]
for i in b: ## , dict1[key] value a, dict2[key] value a , dict1[key] list
a.append(i)
a.append(dict2[key]) ##dict2[key]
dict1[key] = a
결 과 는 다음 과 같다.
dict1
Out[88]: {'order1': ['room1', 'room1', 'room2'], 'order2': ['room3', 'room3', 'room3']}
다음 단계 에서 key 의 value 개 수 를 통계 합 니 다.
from collections import Counter
for key,item in dict1.items():
count[key] = Counter(item)
결 과 는 다음 과 같다.
count
Out[91]: {'order1': Counter({'room1': 2, 'room2': 1}), 'order2': Counter({'room3': 3})}
이 어 각 바깥쪽 key 에서 안쪽 value 가 가장 큰 key 를 꺼 냅 니 다.(예 를 들 어 order 1 에서 room 1 의 값 은 2 로 최대 값 입 니 다.그래서 저 는 room 1 을 order 1,즉 result 1={'order 1':'room 1'}에 부 쳤 습 니 다.)
result = {}
for key,item in count.items():
result[key] = max(item,key=item.get)
결 과 는 다음 과 같다.
result
Out[94]: {'order1': 'room1', 'order2': 'room3'}
(3)사전 정렬:sorted()함수
import operator
dic = {(1, 2): 3, (1, 3): 4, (4, 5): 14} ## key ;
ds = sorted(dic.items(),key=operator.itemgetter(1),reverse=True) ## , reverse=True ;
ds
Out[21]: [((4, 5), 14), ((1, 3), 4), ((1, 2), 3)]
(4)사전 에 서 는 한 키 가 여러 값 에 대응 하 는 경우 가 허용 되 지 않 습 니 다.이 경우 마지막 키 값 을 가 져 옵 니 다.예:
>>> dict1 = {'foo':789, 'foo': 'xyz'}
>>> dict1 :{'foo': 'xyz'}
이상 의 python 은 2 차원 사전 의 키 값 통합 등 함 수 를 실현 하 는 것 이 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.