将项目从一个列表移动到另一个列表并删除字符串的某些部分

我有这个带有 ID 和标题的列表


myemails = [12345, 56789, 456789, 54321, 98765, 'Sample Title: Title number one', 'Sample Title: Title number two', 'Sample Title: Title number three', 'Sample Title: Title number four', 'Sample Title: Title number five']

我正在寻找一种方法将此列表拆分为两个单独的列表,其中一个仅存储 ID,另一个标题中没有字符串的“示例标题:”部分:


myemailId = [12345, 56789, 456789, 54321, 98765]

myemailTitle = ['Title number one', 'Title number two', 'Title number three', 'Title number four', 'Title number five']

到目前为止我的代码:


from collections import defaultdict

myemails = [12345, 56789, 456789, 54321, 98765, 'Sample Title: Title number one', 'Sample Title: Title number two', 'Sample Title: Title number three', 'Sample Title: Title number four', 'Sample Title: Title number five'] 


d = defaultdict(myemails)

for x in myList:

   d[type(x)].append(x)


emailId = print d[int]

emailTitle = print  d[str]

但是它会引发此错误:


TypeError: first argument must be callable or None

有人可以帮我吗?提前致谢!


月关宝盒
浏览 122回答 2
2回答

胡说叔叔

利用:myemailid = [item for item in myemails if str(item).isdigit()]myemailtitle = [item.replace("Sample Title: ", "") for item in myemails if not str(item).isdigit()]print(myemailid)print(myemailtitle)这打印:[12345, 56789, 456789, 54321, 98765]['Title number one', 'Title number two', 'Title number three', 'Title number four', 'Title number five']

互换的青春

您的代码中有几个问题defaultdict应该用类型初始化,但你用myemails而不是初始化它list您将结果分配给print变量(print返回None)试试这个:myemails = [12345, 56789, 456789, 54321, 98765, 'Sample Title: Title number one', 'Sample Title: Title number two', 'Sample Title: Title number three', 'Sample Title: Title number four', 'Sample Title: Title number five'] ids = []titles = []for x in myemails:    if type(x) == int:        ids.append(x)      elif type(x) == str:        titles.append(x)    else:        print("unsupported type {} of {}".format(type(x),x))print(ids)print(titles)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python