Добавить элемент в словарь путем ввода Python - PullRequest
0 голосов
/ 25 апреля 2018

Мне нужно создать словарь, подобный этому, используя пользовательский ввод:

a = {
'1': {'2': 2, '3': 5, '4': 1},
'2': {'1': 2, '3': 2, '4':4},
'3': {'1': 5, '2':2},
'4': {'1': 1, '2': 4, '5':3}, 
'5': {'4':3}}

Например, во входных данных я должен написать «2 2 3 5 4 1», и эти значения идут в индекс N. 1"{'1': {'2': 2, '3': 5, '4': 1}"

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

Спасибо за любой ответ.

Ответы [ 3 ]

0 голосов
/ 25 апреля 2018

Один из способов - использовать str.split и использовать itertools.islice:

from itertools import islice

input_str = '2 2 3 5 4 1'

def zipper(mystr):
    split = mystr.split()
    return zip(islice(split, 0, None, 2), islice(split, 1, None, 2))

d = {}
d['1'] = dict({k: int(v) for k, v in zipper(input_str)})

# {'1': {'2': 2, '3': 5, '4': 1}}
0 голосов
/ 25 апреля 2018

Используйте input, чтобы получить данные, и split, чтобы разбить их на пробелы:

response = input('Enter digits separated by spaces').split()

Теперь цикл, который продолжается до тех пор, пока пользователь не предоставит больше ввода:

while response:
    payload = response[:-1]   # all but the last number
    index = response[-1]      # this is your dictionary key
    # Now count the repetitions in the user's input and assign to a[index]
    a[index] = {k: payload.count(k) for k in payload}  
    # And ask for more input
    response = input('Enter more digits (press Enter to finish)').split()

Затем отобразите ваши результаты:

print(a)
0 голосов
/ 25 апреля 2018

Вы можете добавить элемент к dict, используя этот код:

dict = {'a': [1, 2, 3], 'b': [4, 5, 6]}
dict[index] = [7, 8, 9]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...