Превращение списка в словарь - PullRequest
0 голосов
/ 11 октября 2019

У меня есть список:

['Location: NY',
 'price: 11103 USD', 
 'Year: 2018', 
 'Model: Golf VII',
'Security',
'Airbag']

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

Ответы [ 7 ]

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

Если ваш шаблон всегда такой, как вы изображаете, вы можете split(': ') свои предметы

my_list = ['Location: NY', 'price: 11103 USD', 'Year: 2018', 'Model: Golf VII']
my_dict = { i.split(': ')[0] : i.split(': ')[1] for i in my_list }

ДОПОЛНЕНИЕ ДЛЯ ПУСТЫХ ЗНАЧЕНИЙ:

Вы также можете извлечь свойлогику в функцию и сделать некоторые другие элементы управления (обрезка, нулевые значения и т. д.) и по-прежнему использовать словарь понимание следующим образом:

def str_to_keyval(inp, separator=':'):
  # to list
  li = inp.split(separator) if (separator in inp) else [inp, '']
  # strip elements
  return [i.strip() for i in li]

my_list = [
  'Location: NY',
  'price: 11103 USD',
  'Year: 2018',
  'Model: Golf VII',
  'Security',
  'Airbag'
]

my_dict = { str_to_keyval(i)[0] : str_to_keyval(i)[1] for i in my_list }

Вы можете изменить представление нулевых значений (игнорировать их ключи или обозначить с помощьюпустая строка и т. д.) путем редактирования первой строки функции str_to_keyval в примере. Как таковой, он дает пустую строку как пропущенные значения.

2 голосов
/ 11 октября 2019

Для этого приложения вы можете использовать команду dict comperhension,

Мое решение аналогично ответу @ vahdet, но это решение позаботится о нескольких пробелах, которые могут встречаться в ключе или значении.

l = ['Location: NY',
 'price: 11103 USD', 
 'Year: 2018', 
 'Model: Golf VII']

dict( (x.split(':')[0].strip(),  x.split(':')[1].strip()) for x in l )

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

l = ['Location: NY',
     'price: 11103 USD',
     'Year: 2018',
     'Model: Golf VII',
     'Security',
     'Airbag']

print(dict((x.split(':')[0].strip(), x.split(':')[1].strip()) for x in l if ':' in x))
1 голос
/ 11 октября 2019

Вы можете использовать простое понимание с dict:

my_list = ['Location: NY', 'price: 11103 USD', 'Year: 2018', 'Model: Golf VII']
result = dict(i.split(': ') for i in my_list)

Вывод:

{'Location': 'NY', 'price': '11103 USD', 'Year': '2018', 'Model': 'Golf VII'}
1 голос
/ 11 октября 2019

С этим списком:

mylist = ['Location: NY',
 'price: 11103 USD', 
 'Year: 2018', 
 'Model: Golf VII']

Попробуйте следующий код:

mydict = {}
for l in mylist: 
    a,b = l.split(': ')
    mydict[a] = b
print(mydict)

Вывод:

{'Year': '2018', 'Model': 'Golf VII', 'price': '11103 USD', 'Location': 'NY'}
1 голос
/ 11 октября 2019

Вы можете использовать функцию split, чтобы получить части каждой строки для создания словарной ссылки:

arr = ['Location: NY', 'price: 11103 USD', 'Year: 2018', 'Model: Golf VII']
dict = {}

for i in range(0, len(arr)):
    key, value = arr[i].split(": ")
    dict[key] = value

print(dict)
1 голос
/ 11 октября 2019

Хорошо, поэтому первое, что вам нужно сделать, - это перебрать все элементы в списке. Это довольно просто, используя цикл for

for item in lst:
    # do stuff with the item

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

for item in lst:
    split_item = item.split(": ")
    key = split_item[0]
    value = split_item[1]
    # then you need to add the key and item to the dictionary

Добавить значение довольно просто. Просто определите новое значение:

dictionary = {} # just to initialize the dictionary, if you already initialized it, don't do this
for item in lst:
    split_item = item.split(": ")
    key = split_item[0]
    value = split_item[1]
    dictionary[key] = value

Вот и все

0 голосов
/ 11 октября 2019
a=['Location: NY',
 'price: 11103 USD',
 'Year: 2018',
 'Model: Golf VII']

   b=[]

   x={}

   for i in range(len(a)):

       b.append(a[i].split(':'))


   for i in range(len(b)):

       for j in range(len(b[i])):

          x[b[i][0]]=b[i][1]

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