如何基于另一个列表过滤Python中的列表元素?

2024-05-20 02:31:43 发布

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

我有一个字典列表,希望根据key"timestamp"的值拆分字典。这个想法是将第一学期(1月至7月)的字典和第二学期(8月至12月)的字典分组。我如何才能以高效的方式做到这一点

这是我的代码:

group1 = ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06']

data = [
    {
        'timestamp': '2020-01-01T00:00:00Z',
        'price': 7204.54,
        'volume_24h': 13086960135,
        'market_cap': 130644686531},
    {
        'timestamp': '2020-01-01T01:00:00Z',
        'price': 7218.55,
        'volume_24h': 13133228186,
        'market_cap': 130899528700},
    {
        'timestamp': '2020-01-01T02:00:00Z',
        'price': 7241.8,
        'volume_24h': 13257849556,
        'market_cap': 131321418482
    }
]

semester_1 = [i for i in data if group1 in i['timestamp']]

不幸的是,它抛出了一个错误,因为group1是一个列表


Tags: key代码in列表data字典方式market
3条回答

您可以尝试检查包含该日期的时间戳子字符串是否在列表组1中:

group1 = [f'2020-0{i}' for i in range(1,7)]

data = [{'timestamp': '2020-01-01T00:00:00Z',
  'price': 7204.54,
  'volume_24h': 13086960135,
  'market_cap': 130644686531},
 {'timestamp': '2020-01-01T01:00:00Z',
  'price': 7218.55,
  'volume_24h': 13133228186,
  'market_cap': 130899528700},
 {'timestamp': '2020-01-01T02:00:00Z',
  'price': 7241.8,
  'volume_24h': 13257849556,
  'market_cap': 131321418482}]

semester_1 = [item for item in data if item['timestamp'][:7] in group1]

尝试:

semester_1 = [i for i in data if i['timestamp'][0:7] in group1]

或者即使没有定义{}:

semester_1 = [i for i in data if int(i['timestamp'][5:7]) < 7]

相关问题 更多 >