#python #list #dictionary
#python #Список #словарь
Вопрос:
Я извлекаю два значения регулярных выражений из файла, IP из str1 и ID из str2.
str1 = <IPAddress>12.1.1.2</IPAddress>
str2 = <Id>202</Id>
import re
str1 = re.compile('<IPAddress>(d{1,3}.d{1,3}.d{1,3}.d{1,3})</IPAddress>')
str2 = re.compile('<Id>(d )</Id>')
regexList = [str2,str1]
file = open('ip_list.txt')
file = file.read()
for x in regexList:
ID = x.findall(file)
IP = x.findall(file)
Они оба вернули список из 100 элементов.
Как создать новый dict с идентификатором в качестве ключа и IP в качестве значения?
Каким бы способом я ни пытался использовать Google, например zip и т. Д., Я получаю результат в виде:
ID = {'5988': '5988', '5989': '5989', '5982': '5982', '5983': '5983', '5980': '5980'}
IP = {'204.110.170.210': '204.110.170.210', '10.54.18.15': '10.54.18.15', '10.98.128.145': '10.98.128.145', '10.237.115.122': '10.237.115.122', '10.248.56.1': '10.248.56.1'}
Вместо:
{5988:204.110.170.210,5989:10.54.18.15 ....respectively}
Пожалуйста, помогите
Комментарии:
1. можете ли вы указать, что именно хранится в str1 и str2 и как оно хранится?
2.@swathi — Вы действительно имеете в виду добавление к dict, а не создание нового dict?
Ответ №1:
просто перепишите свой код следующим образом:
import re
str1 = re.compile('<IPAddress>(d{1,3}.d{1,3}.d{1,3}.d{1,3})</IPAddress>')
str2 = re.compile('<Id>(d )</Id>')
regexList = [str2, str1]
file = open('ip_list.txt')
file = file.read()
ID = str2.findall(file)
IP = str1.findall(file)
Your_target_Dictionary = dict(zip(ID, IP))
print(Your_target_Dictionary )
Ответ №2:
Я надеюсь, что этот небольшой пример поможет вам достичь желаемого результата:
Предполагая, что str1 и str2 содержат строки ‘12345’ и ‘abcde’ соответственно,
str1 = '12345'
str2 = 'abcde'
Преобразовать их в список, каждая буква которого является элементом списка:
str1= list(str1)
str2= list(str2)
Теперь str1= [‘1’, ‘2’, ‘3’, ‘4’, ‘5’] и str2 = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]
Следующим шагом будет перебор любого из списков, создание пустого словаря и аналогичное заполнение словаря:
dictionary={}
for i in range(len(str1)):
dictionary[str1[i]] = str2[i]
print(dictionary)
даст следующий результат:
{‘1’: ‘a’, ‘2’: ‘b’, ‘3’: ‘c’, ‘4’: ‘d’, ‘5’: ‘e’}
Комментарии:
1. Попробуйте dictionary[str2[i]] = str1[i], это позволяет идентификаторам быть ключом по индексу, а IP-адреса хранятся в str1 в качестве их значений
Ответ №3:
Для создания нового dict с ключами ID
и значениями IP
, как в списках:
new_dict = dict(zip(ID, IP))
Для добавления ключей ID
и значений IP
к существующему dict:
existing_dict.update(zip(ID, IP))