Как хранить значения нескольких списков во вложенных диктантах? - PullRequest
0 голосов
/ 13 апреля 2020

Я посмотрел документацию о том, как преобразовать два списка в словарь, но здесь это не применимо. Так что простая функция zip здесь не сработает. Я пробовал много разных вещей, которые все приводят к беспорядочным линиям кода головной боли. Ниже я обрисовал в общих чертах результат, который я ищу.

list_01 = ['name_01', 'name_02', 'name_03']
list_02 = ['size_01', 'size_02', 'size_03']
list_03 = ['path_01', 'path_02', 'path_03']
list_04 = ['count_01', 'count_02', 'count_03']

data = {}

Результат, который я ищу:

{'data': {'name_01': {
                    'name':'name_01',
                    'size':'size_01',
                    'path':'path_01',
                    'count':'count_01'},
        'name_02': {
                    'name':'name_02',
                    'size':'size_02',
                    'path':'path_02',
                    'count':'count_02'}
        'name_03': {
                    'name':'name_03',
                    'size':'size_03',
                    'path':'path_03',
                    'count':'count_03'}}}

Дополнительный вопрос: почему При работе json я часто вижу списочные скобки в комментариях? Список в этом примере не имеет смысла для меня (источник: ссылка ). Является ли хорошим выбором использовать списки вместо слов в словах?

{
    "people": [
        {
            "from": "Nebraska",
            "name": "Scott",
            "website": "stackabuse.com"
        }
    ]
}

Ответы [ 3 ]

1 голос
/ 13 апреля 2020
data['data'] = {name:{'name': name, 'size': size, 'path': path, 'count': count} 
    for name, size, path, count in zip(list_01, list_02, list_03, list_04)}

результат pprint.pprint(data)

{'data': {'name_01': {'count': 'count_01',
                      'name': 'name_01',
                      'path': 'path_01',
                      'size': 'size_01'},
          'name_02': {'count': 'count_02',
                      'name': 'name_02',
                      'path': 'path_02',
                      'size': 'size_02'},
          'name_03': {'count': 'count_03',
                      'name': 'name_03',
                      'path': 'path_03',
                      'size': 'size_03'}}}
1 голос
/ 13 апреля 2020

Вы можете использовать словарное понимание в сочетании с zip для создания своего словаря при переборе сжатых списков.

data = {
    name: {
        'name': name,
        'size': size,
        'path': path,
        'count': count,
    } for name, size, path, count in 
    zip(list_01, list_02, list_03, list_04)
}
0 голосов
/ 13 апреля 2020
data["data"]=[]
data["data"].append({"itemlist0":itemlist0})
....
...