Упорядоченные пары в словаре Python

#python #dictionary

#python #словарь

Вопрос:

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

 points2dict(["3 5"])  
{"3":"5"}
  

Как мне заставить python распознавать, что первое число является ключом, а второе число — значением???

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

1. Пожалуйста, предоставьте хотя бы правильный псевдокод. О чем это (["3:5"]) ? Вы всегда можете разделить строку на две части…

2. Под «программой» вы подразумеваете «функцию»? Также вашему синтаксису списка / словаря может потребоваться некоторая работа…

3. Вам нужен словарь со строковыми ключами и значениями или целочисленными ключами и значениями? Вы говорите число, поэтому я предполагаю целое число.

Ответ №1:

Использование split :

 In [3]: pairs = ['3 5', '10 2', '11 3']

In [4]: dict(p.split(' ', 1) for p in pairs)
Out[4]: {'10': '2', '11': '3', '3': '5'}
  

Ответ №2:

 values = [
    '3 5',
    '6 10',
    '20 30',
    '1 2'
]
print dict(x.split() for x in values)
# Prints: {'1': '2', '3': '5', '20': '30', '6': '10'}
  

Ответ №3:

Для вашего простого примера, в котором есть только пары чисел, всегда разделенных пробелом, проверка не требуется:

 def points_to_dict(points):
    #create a generator that will split each string of points
    string_pairs = (item.split() for item in points)
    #convert these to integers
    integer_pairs = ((int(key), int(value)) for key, value in string_pairs)
    #consume the generator expressions by creating a dictionary out of them
    result = dict(integer_pairs)
    return result

values = ("3 5", ) #tuple with values
print points_to_dict(values) #prints {3: 5}
  

Важно отметить, что это даст вам целочисленные ключи и значения (я предполагаю, что это то, что вы хотите, и в любом случае это более интересное преобразование для иллюстрации). Это также будет работать лучше, чем циклы python и даже встроенная карта (отложенное выполнение позволяет генераторам складывать вместо выделения памяти для промежуточных результатов).