Как я могу организовать два списка?строка - PullRequest
0 голосов
/ 01 июля 2010

У меня есть два длинных списка. Одним из них являются имена ... Джон, Пол, Ущелье и Ринго и т. Д. Х 50000 У каждого парня есть номер. Числа после всех имен в порядке. Так что это как 45, 32, 22, 65. 32 это Pual. 45 - Джон и т. Д. Как я могу отформатировать это так, чтобы каждое имя сопровождалось номером.

Спасибо

строка

Ответы [ 2 ]

1 голос
/ 09 июля 2010

Предполагая, что вы хотите превратить его в словарь, и вы начинаете со списка Python (не строка, используемая в качестве списка):

base_list = ["John", "Paul", "Joe", 4, 5, 6]
names = []
numbers = []

for item in base_list:
    if isinstance(item, int): 
        # Checks if the item is an instance of int.
        # If it's a string, you can use the string's 'isdigit' function instead
        numbers.append(item)
    else: 
        names.append(item)

nameNumber = {}

for i in range(len(names)):
    # Iterate through a range of numbers from 0 to the size of names
    nameNumber[names[i]] = numbers[i]

Это выводит {'Paul': 5, 'John': 4, 'Joe': 6}

Если вы просто хотите изменить порядок своего списка, чтобы он назывался «имя», «номер», вы можете изменить последние несколько строк следующим образом:

nameNumber = []

for i in range(len(names)):
    nameNumber.append(names[i])
    nameNumber.append(numbers[i])
1 голос
/ 01 июля 2010

Самый простой способ - разбить каждую строку на массив;большинство языков имеют функцию split (), которая разбивает строку по заданному разделителю.

String[] nameArray = nameList.split(",");
String[] numberArray = numberList.split(",");

Теперь у вас есть два массива, где numberArray[247] содержит число, которое идет с именем в nameArray[247] (дляпример).

Таким образом, вы можете, например, пройти через них:

for (int i=0; i<nameArray.length; i++) {
   println(nameArray[i] + " : " + numberArray[i];
}

Конечно, это может отличаться в зависимости от того, какой язык вы используете.Приведенные выше примеры: java-ish;в ruby ​​эквивалентом может быть что-то вроде

Hash[*nameArray.zip(numberArray).flatten].each {|key, value| puts "#{key} : #{value}" }

РЕДАКТИРОВАНИЕ ДЛЯ ДОБАВЛЕНИЯ: Вот пример использования пробела и делания этого на Python (отказ от ответственности: я не знаю Python особенно):

names = "John Paul George Ringo"
numbers = "11 12 13 14"
nameArray = names.split(" ")
numberArray = numbers.split(" ")
for i in range(len(nameArray)):
    print nameArray[i] + ": " + numberArray[i]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...