#python #python-3.x #list #dictionary
#python #python-3.x #Список #словарь
Вопрос:
Я пишу код словаря, который просит этого пользователя ввести, сколько ключей и значений они хотят создать, но проблема в том, что мне удалось найти способ использовать пользовательский ввод, но теперь почему-то я застрял при отображении словаря.
Вот мой код словаря
dictionary = {}
keys = int(input("How many keys u want? "))
value = int(input("How many values u want?"))
for i in range(keys):
k = input("Key: ")
for j in range(value):
v = input("Value: ")
dictionary[k] = v
print(dictionary)
поэтому, когда я запускаю код программы, он выдает мне следующий результат, который отображает только 1 значение, хотя я ввел 2 значения.
Но я хочу, чтобы вывод отображал каждое введенное мной значение, например, так
{ "Name" : ["David","Adam"],"Address" : ["101 street","102 street"] }
Комментарии:
1. На каждой итерации, когда вы вставляете значение в ключ, вы фактически заменяете значение, вставленное ранее. Чтобы исправить это, создайте каждое значение в виде списка и добавляйте к нему на каждой итерации, а когда все итерации выполнены — вставьте его в ключ.
2. Чтобы согласиться с комментарием @YossiLevi, большинство людей использовали бы a
collections.defaultdict(list)
для этого, чтобы упростить код для добавления первого элемента.
Ответ №1:
опубликует его также в качестве ответа, чтобы у вас был правильный код, и вам не нужно было с ним бороться:
dictionary = {}
keys = int(input("How many keys u want? "))
value = int(input("How many values u want?"))
for i in range(keys):
k = input("Key: ")
values = []
for j in range(value):
v = input("Value: ")
values.append(v)
dictionary[k] = values
print(dictionary)
вывод:
How many keys u want? 2
How many values u want?2
Key: a
Value: 1
Value: 2
Key: b
Value: 3
Value: 4
{'a': ['1', '2'], 'b': ['3', '4']}
Ответ №2:
Вот соответствующий код тому, что сказал @Yossi Levi:
dictionary = {}
keys = int(input("How many keys u want? "))
value = int(input("How many values u want?"))
for i in range(keys):
k = input("Key: ")
val_list = []
for j in range(value):
v = input("Value: ")
val_list.append(v)
dictionary[k] = val_list
print(dictionary)
Ответ №3:
Глядя на то, что вы пытаетесь сделать, и просматривая некоторые комментарии, добавленные к вашему вопросу, похоже, что это сработает для вашего варианта использования:
from collections import defaultdict
from pprint import pprint as pp
dictionary = defaultdict(list) # so every key maps to a list
keys = 2
values = 2
for i in range(keys):
k = input("Key: ")
for j in range(value):
v = input("Value: ")
dictionary[k].append(v)
pp(dictionary)