2016-09-28 3 views
-4

Проблема:
Я пытаюсь реализовать протокол маршрутизации векторных расстояний, и мне нужно отслеживать расстояния узлов/маршрутизаторов (A, B, C) и расстояния от их соседей (1,2,3) и обновлять лучший путь (исходный маршрутизатор к целевому маршрутизатору), если один из маршрутизаторов узнает о другом лучшем пути от своих соседей путем обработки и отправки обновленных векторов расстояний. Подробнее здесь en.wikipedia.org/wiki/Distance-vector_routing_protocolСравнение словарей на Python

Я пытаюсь сравнить два словаря (a & b) и если я найду какой-либо из ключей b (т.е. 'B') присутствует в a тогда я хочу добавить значение из 'B' (т.е. 1) от a и 'C' (т.е. 2) от b поэтому выход похож на следующее:

a = {'A': {'B': 1}} 

b = {'B': {'C': 2}} 

Окончательный выход:

a = {'A': {'B': 1, 'C': 3}} 
+2

Это не выглядит как действительный словарь ... Там нет ключа, связанный с '{«C»: 3}'. – mgilson

+0

Извините, что фиксированный окончательный формат вывода. – Lokesh

+1

Я все еще смущен ... Почему это '{'C': 3}', а не '{'C': 2}'? Почему все это вложено в ключ '' A''? – mgilson

ответ

0

Это не возможно со словарями, но с наборами. Например,

s = {'K':'L', 'L':'K', 'Q':'P'} 
p = {'K':'L', 'Q':'P'} 

# for python 3 
k = s.values() & p.values() # k is now {'L', 'P'} 
# for python 2 
k = s.viewvalues() & p.viewvalues() # is now {'L', 'P'} 

Посмотрите на набор документации here

+1

Возможно со словарями. –

+0

Мне нужны данные такого типа как я пытаюсь реализовать протокол маршрутизации расстояния вектора, и мне нужно отслеживать расстояния узлов/маршрутизаторов, таких как A, B, C и т. д. и их расстояния от их соседей 1,2,3 и т. д. и обновлять наилучшие пути (маршрутизатор и расстояние) если один из маршрутизаторов узнает о другом лучшем пути от своих соседей, отправив и получая векторы расстояния. Подробнее здесь https://en.wikipedia.org/wiki/Distance-vector_routing_protocol. – Lokesh

+0

@Corgs, моя проблема мало сложна, поскольку я Я имею дело со вложенными словарями, и вывод зависит от ключей и их значений. – Lokesh