Как разделить значения внутри словаря Python? - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть значения dict, хранящиеся в форме списка.Вот как это выглядит:

d = [
{'Driveline': 'Rear-wheel drive', 'Hybrid': 'False', 'Classification': 'Automatic,Transmission', 'Number_of_Forward_Gears': 6, 'Fuel_Type': 'Gasoline', 'Length': 'first=prince,initial=p'},
{'Driveline': 'Rear-wheel drive', 'Hybrid': 'False', 'Classification': 'Automatic,Transmission', 'Number_of_Forward_Gears': 6, 'Fuel_Type': 'Gasoline', 'Length': 'first=steven,initial=s'}
]

Здесь, в ключе Length, у меня есть два значения.first=steven,initial=s Я хочу разделить эти значения, создать два новых поля и сохранить их в словаре в обновленном виде.

Обязательный вывод:

d = [
{'Driveline': 'Rear-wheel drive', 'Hybrid': 'False', 'Classification': 'Automatic,Transmission', 'Number_of_Forward_Gears': 6, 'Fuel_Type': 'Gasoline', 'Length': 'first=prince,initial=p','first':'prince','initial':'p'},
{'Driveline': 'Rear-wheel drive', 'Hybrid': 'False', 'Classification': 'Automatic,Transmission', 'Number_of_Forward_Gears': 6, 'Fuel_Type': 'Gasoline', 'Length': 'first=steven,initial=s','first':'steven','initial':'s'}
]

Вот программа, которую я попробовал:

d = [
{'Driveline': 'Rear-wheel drive', 'Hybrid': 'False', 'Classification': 'Automatic,Transmission', 'Number_of_Forward_Gears': 6, 'Fuel_Type': 'Gasoline', 'Length': 'first=prince,initial=p'},
{'Driveline': 'Rear-wheel drive', 'Hybrid': 'False', 'Classification': 'Automatic,Transmission', 'Number_of_Forward_Gears': 6, 'Fuel_Type': 'Gasoline', 'Length': 'first=steven,initial=s'}
]
field_to_split = "Length"
split_using1 = ','
split_using2 = '='
b =[]
for i in d:
    s = i[field_to_split].split(split_using1)
    print(s)
    b.append(s)
    #print(s)
print(b)

Как я могу сделать это возможным ...

1 Ответ

3 голосов
/ 22 апреля 2019

Используя простую итерацию.

Пример:

d = [
    {'Driveline': 'Rear-wheel drive', 'Hybrid': 'False', 'Classification': 'Automatic,Transmission', 'Number_of_Forward_Gears': 6, 'Fuel_Type': 'Gasoline', 'Length': 'first=prince,initial=p'},
    {'Driveline': 'Rear-wheel drive', 'Hybrid': 'False', 'Classification': 'Automatic,Transmission', 'Number_of_Forward_Gears': 6, 'Fuel_Type': 'Gasoline', 'Length': 'first=steven,initial=s'}
    ]

for i in d:
    for j in i['Length'].split(","):    #Split string by comma
        i.update(dict([j.split("=")]))  #Split string by eq sign and use dict() method to create a dictionary 

Выход:

[{'Classification': 'Automatic,Transmission',
  'Driveline': 'Rear-wheel drive',
  'Fuel_Type': 'Gasoline',
  'Hybrid': 'False',
  'Length': 'first=prince,initial=p',
  'Number_of_Forward_Gears': 6,
  'first': 'prince',
  'initial': 'p'},
 {'Classification': 'Automatic,Transmission',
  'Driveline': 'Rear-wheel drive',
  'Fuel_Type': 'Gasoline',
  'Hybrid': 'False',
  'Length': 'first=steven,initial=s',
  'Number_of_Forward_Gears': 6,
  'first': 'steven',
  'initial': 's'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...