Python Словарь упорядоченных пар - PullRequest
0 голосов
/ 11 октября 2011

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

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

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

Ответы [ 3 ]

3 голосов
/ 11 октября 2011

Использование 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'}
1 голос
/ 11 октября 2011
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'}
0 голосов
/ 11 октября 2011

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

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}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...