시작하려면 여기에 몇 가지 비슷한 제목의 질문이 있다는 것을 알고 있지만이 방법은 아무 것도 설명되지 않았고 문제 범위가 동일하지 않습니다.동적 중첩 사전
동적으로 중첩 된 사전 항목을 추가하고 싶습니다.
사용 사례는 다음과 같습니다. 네트워크를 모니터링하는 Python 스크립트가 있습니다. 관찰 된 IP 프로토콜 (tcp, udp, icmp)마다 사전이 생성됩니다. 그런 다음 각 IP 프로토콜 (80, 443 등)에 대한 대상 포트 (존재하는 경우) 인 키를 사용하여 하위 사전을 만듭니다 (서버 포트를 소스로 간주하는지 여부는 중요하지 않음을 유의하십시오 또는 대상이지만 일반적으로 서버가 대상이므로 HTTP 및 HTTPS를 예로 들었습니다. 이러한 각 대상 포트에 대해 서버 IP (예 : www.google.com의 IP)에 해당하는 키가 생성됩니다. 그리고 타임 스탬프를 가진 또 다른 사전이 세션의 키와 클라이언트의 IP가되는 키의 데이터/값으로 처음 관찰되었습니다.
그러나 실행하기 전이나 초기화 할 때 데이터가 없으므로 시간이 지나면 데이터가 채워 져야합니다.
{ 'icmp' :
{ 'echo-request' :
{ '<ip_of_www.google.com>' :
{ '<timestamp>' : <some_client_ip> }
}
'echo-reply' :
{ '<ip_of_www.google.com>' :
{ '<timestamp>' : <some_client_ip> }
}
}
'tcp' :
{
'80'
{ '<ip_of_www.google.com>' :
{ '<timestamp>' : <some_client_ip> }
{ '<timestamp>' : <some_client_ip> }
}
'443'
{ '<ip_of_encrypted.google.com>' :
{ '<timestamp>' : <some_client_ip> }
{ '<timestamp>' : <some_client_ip> }
{ '<timestamp>' : <some_client_ip> }
{ '<timestamp>' : <some_client_ip> }
}
}
}
감사 :
출력은 유사 보일 것입니다! 여기
1) 시간이 지남에 따라 사전을 업데이트하십시오. 2) note : 타임 스탬프는 중요하지 않습니다. 3) 구조가 올바르지 않습니다. 키에 대해 하나의 값만 가질 수 있습니다. –
# 1 : 그게 정확히 내가 요구하는 것입니다 ... # 2 : 키로 타임 스탬프가 이해가 필요하지 않습니다, 이것은 과장된 예제입니다 # 3에 대해 : 나는 무엇에 대해 확신하지 못합니다. 당신은 이것에 의해 의미합니다. 물론 하나의 키만 있지만 각 키의 값은 다른 사전 (따라서 중첩 속성) 일 수 있습니다. 어디에서 다중 값 키를 보여 주었습니까/기대하고/묻었습니까? – Nick
당신은 * 세 번째 포인트를 처리해야합니다 ... –