使用“else”np.nan公司'在列表中'

2024-06-14 15:06:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个网站列表,我只想提取社交媒体的个人资料(比如facebook、linkedin和pinterest)

import numpy as np

mylist = ['linkedin.com/profilexyz','facebook.com/profile374','bbcnews.com/USA_news','stackoverflow.com']

我使用列表理解来获取URL,如果找不到,则返回nan

facebook = [x for x in mylist if 'facebook' in x else np.nan for x in mylist]
linkedin = [x for x in mylist if 'linkedin' in x else np.nan for x in mylist]
pinterest = [x for x in mylist if 'pinterest' in x else np.nan for x in mylist]

但是我得到了一个错误:

File "<ipython-input-329-578130619ae7>", line 1
facebook = [x for x in mylist if 'facebook' in x else np.nan for x in mylist]
                                                        ^
SyntaxError: invalid syntax

我已经检查了建议的副本,比如这个:if/else in a list comprehension?,但无法让我的理解发挥作用。你知道吗


Tags: incom列表forfacebookif网站np
3条回答

你的订单搞砸了,还要给我加点钱

fb = [x if 'facebook' in x else np.nan for x in mylist]

只用括号:

facebook = [(x for x in mylist) if 'facebook' in x else np.nan for x in mylist]
linkedin = [(x for x in mylist) if 'linkedin' in x else np.nan for x in mylist]
pinterest = [(x for x in mylist) if 'pinterest' in x else np.nan for x in mylist]

这是一种使用collections.defaultdictstr.split的方法

例如:

from collections import defaultdict

result = defaultdict(list)
mylist = ['linkedin.com/profilexyz','facebook.com/profile374','bbcnews.com/USA_news','stackoverflow.com']

for url in mylist:
    result[url.split('/')[0]].append(url)
print(result)

输出:

defaultdict(<class 'list'>, {'linkedin.com': ['linkedin.com/profilexyz'], 'facebook.com': ['facebook.com/profile374'], 'bbcnews.com': ['bbcnews.com/USA_news'], 'stackoverflow.com': ['stackoverflow.com']})

以供参考

facebook = [x for x in mylist if 'facebook' in x]
print(facebook)

相关问题 更多 >