我如何组织两个列表?串

时间:2010-07-01 15:45:47

标签: string

我有两个长名单。一个是名字...... John,Paul,Gorge和Ringo等x 50,000 每个人都有一个号码。这些数字按顺序排在所有名称之后。因此它像45,32,22,65。32是Pual。 45是约翰等。我如何格式化这个,以便每个名称都与数字一致。

由于

string

3 个答案:

答案 0 :(得分:1)

最简单的方法是将每个字符串拆分成一个数组;大多数语言都有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]

答案 1 :(得分:1)

假设你想把它变成一个字典而你开始使用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])

答案 2 :(得分:0)

如果这是您的数据

name_list = ["John", "Paul", "Gorge", ...]
number_list = [45, 32, 22, ...]

尝试

zip(name_list, number_list)

包含

("John", 45)
("Paul", 32)
("Gorge", 22)
...

:)