Получить элементы словаря внутри списка? python - PullRequest
0 голосов
/ 06 апреля 2020

Я новичок и самоучка python. Я уже целый день исследую, как сделать следующее, и мне нужно руководство, пожалуйста.

Я пытаюсь извлечь из этого значения для минут, часов, секунд и т. Д. 1014 *, но я верю это словарь, завернутый в список ?? так что меня смущает

[Slot(slotName='Duration', entity='snips/duration', rawValue='for 3 minutes', value={'kind': 'Duration', 'years': 0, 'quarters': 0, 'months': 0, 'weeks': 0, 'days': 0, 'hours': 0, 'minutes': 3, 'seconds': 0, 'precision': 'Exact'}, range={'start': 13, 'end': 26}, alternatives=[], confidenceScore=None)]

Фрагмент кода, который у меня есть, ниже:

        if 'Duration' in session.slotsAsObjects:
            print("running duration code")
            print("")

            slotObjects = session.slotsAsObjects

            print("slotObjects type is ", type(slotObjects))
            print("")
            print("slotObjects returns : ", slotObjects)
            print(slotObjects.get('Duration'))
            print("")

            slot = slotObjects.get('Duration', list())

            print("slot type is :", type(slot))
            print("")
            print("Slot value is ", slot)
            print("")

            if slot:
                minutes = slot[0]
                print("Below is what print(slot[0]) returns ")
                print(minutes)

            else:
                print("nothing to see here ")

, а результат выше приведен ниже:

running duration code

slotObjects type is  <class 'collections.defaultdict'>

slotObjects returns :  defaultdict(<class 'list'>, {'AddReminder': [Slot(slotName='AddReminder', entity='AddReminder', rawValue='reminder', value={'kind': 'Custom', 'value': 'reminder'}, range={'start': 4, 'end': 12}, alternatives=[], confidenceScore=None)], 'Duration': [Slot(slotName='Duration', entity='snips/duration', rawValue='for 3 minutes', value={'kind': 'Duration', 'years': 0, 'quarters': 0, 'months': 0, 'weeks': 0, 'days': 0, 'hours': 0, 'minutes': 3, 'seconds': 0, 'precision': 'Exact'}, range={'start': 13, 'end': 26}, alternatives=[], confidenceScore=None)]})
[Slot(slotName='Duration', entity='snips/duration', rawValue='for 3 minutes', value={'kind': 'Duration', 'years': 0, 'quarters': 0, 'months': 0, 'weeks': 0, 'days': 0, 'hours': 0, 'minutes': 3, 'seconds': 0, 'precision': 'Exact'}, range={'start': 13, 'end': 26}, alternatives=[], confidenceScore=None)]

slot type is : <class 'list'>

Slot value is  [Slot(slotName='Duration', entity='snips/duration', rawValue='for 3 minutes', value={'kind': 'Duration', 'years': 0, 'quarters': 0, 'months': 0, 'weeks': 0, 'days': 0, 'hours': 0, 'minutes': 3, 'seconds': 0, 'precision': 'Exact'}, range={'start': 13, 'end': 26}, alternatives=[], confidenceScore=None)]

Below is what print(slot[0]) returns 
Slot(slotName='Duration', entity='snips/duration', rawValue='for 3 minutes', value={'kind': 'Duration', 'years': 0, 'quarters': 0, 'months': 0, 'weeks': 0, 'days': 0, 'hours': 0, 'minutes': 3, 'seconds': 0, 'precision': 'Exact'}, range={'start': 13, 'end': 26}, alternatives=[], confidenceScore=None)

Цените любой руководство по этому вопросу

1 Ответ

0 голосов
/ 07 апреля 2020

я наткнулся на ответ, за которым я благодарен.

@staticmethod
  def getDuration(session: DialogSession) -> int:
    slots = session.slotsAsObjects
    duration = 0
    if 'Duration' in slots and slots['Duration'][0].entity == 'snips/duration':
      with suppress(TypeError, KeyError):
        values = slots['Duration'][0].value
        duration += values['seconds']
        duration += values['minutes'] * 60
        duration += values['hours'] * 60 * 60
        duration += values['days'] * 24 * 60 * 60
        duration += values['weeks'] * 7 * 24 * 60 * 60
        duration += values['months'] * 4 * 7 * 24 * 60 * 60

    return duration
...