#python #list #dictionary
#python #Список #словарь
Вопрос:
У меня есть список строк, который выглядит следующим образом:
myList = [
"this 1 is my string",
"a nice 2 string",
"string is 3 so nice"
]
Я хотел бы преобразовать эту строку в a dict
, которая также выглядит следующим образом:
{
"1": "this is my string",
"2": "a nice string",
"3": "string is so nice"
}
Я не знаю, как это сделать.
Ключом может стать только целое число, но все остальное должно стать значением, спасибо.
Ответ №1:
import re
myDict = {}
for element in myList:
# Find number using regex.
key = re.findall(r'd ', element)[0]
# Get index of number.
index = element.index(key)
# Create new string with index and trailing space removed.
new_element = element[:index] element[index 2:]
# Add to dict.
myDict[key] = new_element
Ответ №2:
Если у вас несколько чисел в строке, оно примет значение first number
как key
для dict
,
>>> for line in myList:
... match = re.search(r'd ',line)
... if match:
... num = match.group()
... newline = line.partition(num) # control over the partition
... newline = newline[0].strip() ' '.join(newline[2:])
... d[num] = newline
...
>>>
>>> d
{'1': 'this is my string', '3': 'string is so nice', '2': 'a nice string'}
Ответ №3:
Самый простой способ сделать это без установки каких-либо внешних зависимостей — использовать findall
метод из re
модуля.
from re import findall
def list_to_dict(lst):
result = {}
for value in lst:
match = findall(r"d", value)
if len(match) > 0:
result[match[0]] = value.replace(match[0], "").replace(" ", " ")
return result
Если вы хотите, вы можете заменить 0
индекс другим индексом, хотя это следует делать только в том случае, если вы уверены, что знаете, где находится индекс целого числа.
Затем, используя ваш список:
my_list = [
"this 1 is my string",
"a nice 2 string",
"string is 3 so nice"
]
Вы бы вызвали функцию следующим образом:
print(list_to_dict(my_list))
Что должно вывести это dict
:
{'1': 'this is my string', '2': 'a nice string', '3': 'string is so nice'}
Удачи.