Преобразуйте словарь в строку с помощью glom

#python #glom

Вопрос:

У меня есть следующие варианты входных данных:

 show_version_ios_parsed = {  "version": {  "uptime": "7 weeks, 6 days, 3 hours, 37 minutes",  } }  

и

 show_version_nxos_parsed = {  "platform": {  "kernel_uptime": {"days": 102, "hours": 1, "minutes": 2, "seconds": 13},  } }  

Мне нужно извлечь uptime (или kernel_uptime ) ключевое значение в виде строки, чтобы оба результата выглядели так:

 {'uptime': '7 weeks, 6 days, 3 hours, 37 minutes'}  

и

 {'uptime': '102 days, 1 hours, 2 minutes, 13 seconds}  

Я придумал следующую спецификацию glom:

 spec = (  T.items(),  Iter(  {  "uptime": Coalesce(T[1]["uptime"], T[1]["kernel_uptime"]),  },  ),  Merge(), )  

После применения его к входным данным я получаю это:

 gt;gt;gt; glom(show_version_ios_parsed, spec) {'uptime': '7 weeks, 6 days, 3 hours, 37 minutes'} gt;gt;gt; glom(show_version_nxos_parsed, spec) {'uptime': {'days': 102, 'hours': 1, 'minutes': 2, 'seconds': 13}}  

Как вы можете видеть, он извлекает только uptime ключевое значение, как оно есть.

Есть ли способ преобразовать второе значение времени безотказной работы в строку с glom?