Как получить доступ к словарю с несколькими списками - PullRequest
0 голосов
/ 27 апреля 2020

Итак, у меня есть общий словарь, который установлен пустым, и я добавил к нему URL-адрес и длительность, теперь в словаре несколько URL-адресов и длительностей, все длительности хранятся в списке, я пытаюсь Доступ к каждому отдельному списку, чтобы добавить числа в них вместе, но я не могу получить к нему доступ, кто-нибудь знает, как?

    import time
    import unittest
    import json
    from selenium import webdriver


    class Tester(unittest.TestCase):
        "doc string"
        def setUp(self):
            "doc string"
            self.driver = webdriver.Chrome("/Users/tamerjar/Desktop/chromedriver")
            self.driver.implicitly_wait(30)
            self.verificationErrors = []


    def test_er(self):
        "doc string"
        driver = self.driver

        # This is the total dictionary where im trying to access the ['duration']
        total = {}

        print("total" + str(total))
        durations = []
        with open('output.txt', 'w') as json_file:
            for result in range(10):
                driver.get("https://en.wikipedia.org/wiki/Software_metric")
                result = driver.execute_script('return window.performance.getEntries()')
                print(result)


                for current in result:
                    #This is where i appended to the total
                    url = current['name']
                    current_list = total.get(url, [])
                    current_list.append(current['duration'])
                    total[url] = current_list


                    print("current list" + str(current_list))
                    print("total" + str(total))
                    print(current['name'])
                    print(current['duration'])
                    print(current.keys())
                    json_file.write(f"{current['name']}, {current['duration']}\n")
                    print("Total final : " + str(total))





        # with open('mycsv.csv', 'w') as csv_file:
        #     for key in total.keys():
        #     csv_file.write(f'{key}, {average}')

        with open('json_output' + '.json', 'w', encoding='utf-8') as f:
            json.dump(result, f, ensure_ascii=False, indent=4)



    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)


if __name__ == "__main__":
    unittest.main()

Ответы [ 2 ]

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

Я не уверен, правильно ли я понимаю. Может быть, вы можете показать пример упомянутого словаря. Если Я правильно понял, вы просто пытаетесь перебрать пары ключ / значение (key - это URL, а value - ваш список с длительностями?) Словаря. ? Что вы можете сделать следующим образом:

for key, value in your_dict.items():
    print(key, value)
    # using the sum function
    sum1 = sum(value)
    # or calculate on your own by iterating the list
    sum2 = 0
    for i in value:
        sm2 += i
    # result is the same
    print(sum1, sum2)

Если вы хотите суммировать все длительности по всем элементам, вы можете сделать это точно так же. Вам просто нужно присвоить переменную суммы за пределами итерационных циклов и добавить к ней.

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

Если я правильно понял ваш вопрос, я думаю, что вы сохранили некоторые данные в общем количестве словаря, ключи которого - разные URL. И вы пытаетесь получить доступ к значениям словаря. Это правильно?

Если да, я думаю, вы можете сделать следующее, чтобы просмотреть список и манипулировать значениями словаря.

for x in total:
     list = total[x]
#here x will be the url and list will provide with the data you have saved with the url.

Дайте мне знать, если я допустил ошибку в понимание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...