仅从python中的列表列表中提取相关信息

Bel*_*a92 0 python

我有一个包含字符串子列表的列表。

喜欢

info = [['Price: 5000', 'In warranty', 'Weight: 8 kg'], 

['Refundable', 'Price: 2800', 'Weight: 5.5 kg', 'Extra battery power'], 

['Price: 9000', 'Non-exchangeable', 'Weight: 8 kg', 'High-Quality']..]
Run Code Online (Sandbox Code Playgroud)

每个子列表都有一些无关紧要的额外字符串。我只需要在子列表中准确描述产品信息的 5 个值,并且这 5 个值中的每一个都有自己的关键字。

使用关键字从子列表中提取有用字符串并丢弃其余字符串的方法是什么?在上面的示例中,我只想保留“价格”、“重量”。

CMM*_*MCD 6

in关键字可以用来查看是否一个字符串(或清单)包含另一个字符串。您可以使用any关键字一次检查多个项目。

info = [
    ['Price: 5000', 'In warranty', 'Weight: 8 kg'], 
    ['Refundable', 'Price: 2800', 'Weight: 5.5 kg', 'Extra battery power'], 
    ['Price: 9000', 'Non-exchangeable', 'Weight: 8 kg', 'High-Quality']
]

keywords = ['Price', 'Weight']

for item in info:
    print([x for x in item if any(kw in x for kw in keywords)])
Run Code Online (Sandbox Code Playgroud)

输出:

['Price: 5000', 'Weight: 8 kg']
['Price: 2800', 'Weight: 5.5 kg']
['Price: 9000', 'Weight: 8 kg']
Run Code Online (Sandbox Code Playgroud)

此数据的更清晰格式可能是使用字典。

info = [
    {
        'Price': 5000, 
        'Weight': '8 kg',
        'Attributes': ['In warranty'] 
    },
    {
        'Price': 2800, 
        'Weight': '5.5 kg',
        'Attributes': ['Refundable', 'Extra battery power'] 
    },
    {
        'Price': 9000, 
        'Weight': '8 kg',
        'Attributes': ['Non-exchangeable', 'High-Quality'] 
    }
]

keywords = ['Price', 'Weight']

info_filterd = [{k: v for k, v in item.items() if k in keywords} for item in info]
print(info_filterd)
Run Code Online (Sandbox Code Playgroud)

输出:

[
    {
        "Price": 5000,
        "Weight": "8 kg"
    },
    {
        "Price": 2800,
        "Weight": "5.5 kg"
    },
    {
        "Price": 9000,
        "Weight": "8 kg"
    }
]
Run Code Online (Sandbox Code Playgroud)