合并两个列表列表-Python

2024-06-10 22:49:24 发布

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

这是一本很好的入门书,但并不能满足我的需求: Combining two sorted lists in Python

我有两个Python列表,每个列表都是日期时间、值对的列表:

list_a = [['1241000884000', 3], ['1241004212000', 4], ['1241006473000', 11]]

以及:

list_x = [['1241000884000', 16], ['1241000992000', 16], ['1241001121000', 17], ['1241001545000', 19], ['1241004212000', 20], ['1241006473000', 22]]
  1. 实际上有许多具有不同键/值的列表。
  2. 所有列表日期都在列表x中
  3. 我想做一个list,list_c,对应于每个list_a,每个list_x和value_a/value_x的日期时间

奖金:

在我的实际程序中,list_a实际上是这样一个字典中的列表。将答案带到字典级别将是:

dict = {object_a: [['1241000884000', 3], ['1241004212000', 4], ['1241006473000', 11]], object_b: [['1241004212000', 2]]}

不过我能弄清楚那部分。


Tags: 答案in程序列表字典objectvalue时间
4条回答

“我想制作一个列表,列表c,对应于每个列表a,列表x和值a/值x中的每个日期时间。”

def merge_lists( list_a, list_x ):
    dict_x= dict(list_x)
    for k,v in list_a:
        if k in dict_x:
            yield k, (v, dict_x[k])

类似的事情也可能奏效。

merged= list( merge_lists( someDict['object_a'], someDict['object_b'] )

这可能会稍微快一点,因为它只生成一个字典供查找,而只留下另一个列表。

没有什么能比得上一个功能性很好的一行:

reduce(lambda l1,l2: l1 + l2, list)

这里有一些代码可以满足你的要求。你可以直接把你的配对表变成字典。然后,通过将密钥集相交,可以找到共享的密钥。最后,在给定共享密钥集的情况下,很容易构造结果字典。

dict_a = dict(list_a)
dict_x = dict(list_x)

shared_keys = set(dict_a).intersection(set(dict_x))

result = dict((k, (dict_a[k], dict_x[k])) for k in shared_keys)

“我想制作一个列表,列表c,与每个列表a相对应,每个列表a具有列表x中的每个日期时间和值a/值x。”

def merge_lists( list_a, list_x ):
    dict_x= dict(list_x)
    for k,v in list_a:
        if k in dict_x:
            yield k, (v, dict_x[k])

类似的事情也可能奏效。

merged= list( merge_lists( someDict['object_a'], someDict['object_b'] )

这可能会稍微快一点,因为它只生成一个用于查找的词典,而只留下另一个列表。

相关问题 更多 >