python - 如何展平由字符串组成的列表列表?
问题描述
我有一个由包含字符串的列表组成的列表。它看起来像这样:
["['eth', 'ethereum', 'nft', 'nonfungibletoken', 'token', 'crypto', 'digitalassets', 'etf', 'digitalcoin', 'ewallet', 'digitalgold', 'internetmoney', 'defi', 'decentralizedfinance', 'peertopeer', 'digitalcurrency', 'decentralizedmoney']",
"['nft']",
"['coinvotecc', 'craftnft']",
"['coinvotecc', 'craftnft']",
"['fitoken', 'fnk', 'nft', 'bsc', 'bnb']",
"['nft', 'nft', 'nftarts', 'nftart', 'token', 'opeansea', 'nftcollecting', 'nftbuy', 'nfthorse', 'nftlion', 'nftold', 'nftlionesstiger', 'lion', 'lions']",
"['nft']",]
我不确定'"'是干什么用的。
我试图通过将其转换为一个大列表来将其展平。我已经尝试了很多不同的方法来做到这一点,但我得到了这样的错误:“浮动对象不可迭代”和“str 没有属性 len()”。
我不确定错误是什么。任何帮助将非常感激。
解决方案
您的列表不包含列表,而是一个字符串。因此,您必须首先将其转换为列表,eval
这是最简单的:
the_list = ["['eth', 'ethereum', 'nft', 'nonfungibletoken', 'token', 'crypto', 'digitalassets', 'etf', 'digitalcoin', 'ewallet', 'digitalgold', 'internetmoney', 'defi', 'decentralizedfinance', 'peertopeer', 'digitalcurrency', 'decentralizedmoney']"]
eval(the_list[0])
会给你
['eth', 'ethereum', 'nft', 'nonfungibletoken', 'token', 'crypto', 'digitalassets', 'etf', 'digitalcoin', 'ewallet', 'digitalgold', 'internetmoney', 'defi', 'decentralizedfinance', 'peertopeer', 'digitalcurrency', 'decentralizedmoney']
编辑:如果您有多个字符串(根据您的编辑),您可以这样做
[eval(item) for item in the_list]
编辑2:如果某些元素不是字符串(根据您随后的评论),您可以使用它(我包括了一种扁平化的方法):
def eval_or_keep(element):
return eval(element) if isinstance(element, str) else [element]
list_of_lists = [eval_or_keep(item) for item in the_list]
flattened_list = [item
for sub_list in list_of_lists
for item in sub_list]
推荐阅读
- typescript - 打字稿:数组上的问号
- json - 从 LinkedIn v2 api 解析电子邮件
- python - 等高线/散点图 - 插值数据不覆盖整个散点图
- python - 自动化无聊的东西中的逗号代码程序
- null - MyBatis 注解配置 autowired 字段 null
- python - 导入模块没有属性
- python - Kafka 不同分区选择 python confluent_kafka library v/s apache kafka Java
- c# - Selenium - 等待 OutOfBound 元素 C#
- django - 如何将 Django QueryDict 转换为 Django ORM OR 过滤器列表?
- git - 将存储库重新格式化为带有子模块的超级项目