根据Python中包含的文本对列表中的字符串进行配对
我希望获得一个字符串列表,并创建一个元组列表,根据它们是否包含相同的文本对项目进行分组 例如,假设我有以下列表:根据Python中包含的文本对列表中的字符串进行配对,python,list,Python,List,我希望获得一个字符串列表,并创建一个元组列表,根据它们是否包含相同的文本对项目进行分组 例如,假设我有以下列表: MyList=['Apple1','Pear1','Apple3','Pear2'] 我想根据字符串的最后一个字符以外的所有字符对它们进行配对,以便得到: ListIWant=[('Apple1','Apple3'),('Pear1','Pear2')] 我们可以假设仅使用字符串的最后一个字符来标识。这意味着我希望通过以下唯一值对字符串进行分组: >>>
MyList=['Apple1','Pear1','Apple3','Pear2']
我想根据字符串的最后一个字符以外的所有字符对它们进行配对,以便得到:
ListIWant=[('Apple1','Apple3'),('Pear1','Pear2')]
我们可以假设仅使用字符串的最后一个字符来标识。这意味着我希望通过以下唯一值对字符串进行分组:
>>> list(set([x[:-1] for x in MyList]))
['Pear', 'Apple']
考虑以下代码:
def alphagroup(lst):
results = {}
for i in lst:
letter = i[0].lower()
if not letter in results.keys():
results[letter] = [i,]
else:
results[letter].append(i)
output = []
for k in results.keys():
res = results[k]
output.append(res)
return output
arr = ["Apple1", "Pear", "Apple2", "Pack"];
print alphagroup(arr);
这将实现你的目标。如果每个元素必须是一个元组,请使用tuple()内置命令将每个元素转换为一个元组。希望这有帮助;我测试了代码。请考虑以下代码:
def alphagroup(lst):
results = {}
for i in lst:
letter = i[0].lower()
if not letter in results.keys():
results[letter] = [i,]
else:
results[letter].append(i)
output = []
for k in results.keys():
res = results[k]
output.append(res)
return output
arr = ["Apple1", "Pear", "Apple2", "Pack"];
print alphagroup(arr);
这将实现你的目标。如果每个元素必须是一个元组,请使用tuple()内置命令将每个元素转换为一个元组。希望这有帮助;我测试了代码。请考虑以下代码:
def alphagroup(lst):
results = {}
for i in lst:
letter = i[0].lower()
if not letter in results.keys():
results[letter] = [i,]
else:
results[letter].append(i)
output = []
for k in results.keys():
res = results[k]
output.append(res)
return output
arr = ["Apple1", "Pear", "Apple2", "Pack"];
print alphagroup(arr);
这将实现你的目标。如果每个元素必须是一个元组,请使用tuple()内置命令将每个元素转换为一个元组。希望这有帮助;我测试了代码。请考虑以下代码:
def alphagroup(lst):
results = {}
for i in lst:
letter = i[0].lower()
if not letter in results.keys():
results[letter] = [i,]
else:
results[letter].append(i)
output = []
for k in results.keys():
res = results[k]
output.append(res)
return output
arr = ["Apple1", "Pear", "Apple2", "Pack"];
print alphagroup(arr);
这将实现你的目标。如果每个元素必须是一个元组,请使用tuple()内置命令将每个元素转换为一个元组。希望这有帮助;我对代码进行了测试。我相信您希望对
排序的
调用使用与对groupby
调用相同的键
函数,否则当输入类似于“Apple1”、“Apple12”、“Apple3”
时,您将分组,因为即使groupby
键
函数将Apple1
与Apple3
组合,Apple12
也会在两者之间排序并拆分组,从而防止groupby
看到两者属于一起(它只处理由连续值组成的组)。没错。现在添加。我相信您希望对排序的
调用使用与对groupby
调用相同的键
函数,否则当输入类似于“Apple1”、“Apple12”、“Apple3”
时,您将分组,因为即使groupby
键
函数将Apple1
与Apple3
组合,Apple12
也会在两者之间排序并拆分组,从而防止groupby
看到两者属于一起(它只处理由连续值组成的组)。没错。现在添加。我相信您希望对排序的
调用使用与对groupby
调用相同的键
函数,否则当输入类似于“Apple1”、“Apple12”、“Apple3”
时,您将分组,因为即使groupby
键
函数将Apple1
与Apple3
组合,Apple12
也会在两者之间排序并拆分组,从而防止groupby
看到两者属于一起(它只处理由连续值组成的组)。没错。现在添加。我相信您希望对排序的
调用使用与对groupby
调用相同的键
函数,否则当输入类似于“Apple1”、“Apple12”、“Apple3”
时,您将分组,因为即使groupby
键
函数将Apple1
与Apple3
组合,Apple12
也会在两者之间排序并拆分组,从而防止groupby
看到两者属于一起(它只处理由连续值组成的组)。没错。现在把它加进去。