我有两个长名单。一个是名字...... John,Paul,Gorge和Ringo等x 50,000 每个人都有一个号码。这些数字按顺序排在所有名称之后。因此它像45,32,22,65。32是Pual。 45是约翰等。我如何格式化这个,以便每个名称都与数字一致。
由于
string
答案 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)
...
:)