Имя ключа-значения словаря Python

#python

#python

Вопрос:

 a = [0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3]
b = [24, 53, 88, 32, 45, 24, 88, 53, 11, 22, 33, 44, 55, 66, 77]
 

Это список для того же

Комментарии:

1. Ваш желаемый результат не является допустимой структурой данных. У dict не может быть дубликатов ключей.

2. обработайте свой вывод из построенного dict следующим образом: для el в d.items(): print(«ID:» str(el[0]), «Лотерея» str(el[1]))

3. Поместите ID amp; Lottery в namedtuple или в диктат самого себя.

4. Вы могли бы создать список dicts из вашего d : [{"ID": k, "Lottery": v} for k, v in d.items()] .

5. Как вы его отредактировали, в чем теперь вопрос?

Ответ №1:

Ваш ожидаемый результат — недопустимая структура данных. Вы можете точно достичь этого с помощью списка словаря в python,

 result = []
for k,v in d.items():
    result.append({"ID": k, "Lottery": v})

print(result)
 

Вывод

 [ 
 {'ID': 0, 'Lottery': [24, 53, 88]},
 {'ID': 1, 'Lottery': [32, 45, 24, 88, 53]}, 
 {'ID': 2, 'Lottery': [11, 22, 33, 44, 55, 66]},
 {'ID': 3, 'Lottery': [77]}
]
 

ДЕМОНСТРАЦИЯ: https: //rext.com/XNBFFD14330

Комментарии:

1. @devopio вы можете пометить его как принятый зеленой галочкой

Ответ №2:

Вы могли бы сделать это, используя словарь словарей, который позже преобразуется в список словарей.

 a = [0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3]
b = [24, 53, 88, 32, 45, 24, 88, 53, 11, 22, 33, 44, 55, 66, 77]

d = { i:{"ID":i, "Lottery":[]} for i in a }
for i,v in zip(a,b): d[i]["Lottery"].append(v)
d = [*d.values()]

print(d)
# [{'ID': 0, 'Lottery': [24, 53, 88]}, {'ID': 1, 'Lottery': [32, 45, 24, 88, 53]}, {'ID': 2, 'Lottery': [11, 22, 33, 44, 55, 66]}, {'ID': 3, 'Lottery': [77]}]