如何对具有相同元素的两个Python列表进行MYSQL内部连接?

2024-05-17 07:34:00 发布

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

我有两个python3数组(列表),类似于MYSQL中的两个列。它们的一些第一个“列”元素是相同的:

list1 = [ 

['a', 'apple'], 
['b', 'banana'], 
['m', 'mango']

]

list2 = [ 

['b', 'buffalo'], 
['zzzz', 'zzzzegemot, a sleeping behemoth'], 
['m', 'mongoose']

]

请注意,在这两个列表中,第一个“b”和第三个“m”元素是相同的。在

如何在list1[0]和list2[0]上执行类似于MYSQL INNER JOIN的操作,并获得第三个类似的列中类似项的组合:

^{pr2}$

我希望我能清楚地表达我自己,让你能理解我。在


Tags: 元素apple列表mysql数组python3bananabuffalo
2条回答

由于您有两个列表,内部连接应该负责重复键。在

m1 = reduce(lambda c,x: c[x[0]].append(x[1]) or c,list1,defaultdict(list))
list(chain(*(product(m1[e[0]],[e[1]]) for e in list2)))

# added entries ['b', 'bongo']  and ['b', 'bull'] into list1 and list2
>>> [('banana', 'buffalo'),
     ('bongo', 'buffalo'),
     ('banana', 'bull'),
     ('bongo', 'bull'),
     ('mango', 'mongoose')]

list1list2转换为字典可以轻松地执行您想要的操作:

>>> list1 = [
...     ['a', 'apple'],
...     ['b', 'banana'],
...     ['m', 'mango']
... ]
>>>
>>> list2 = [
...     ['b', 'buffalo'],
...     ['zzzz', 'zzzzegemot, a sleeping behemoth'],
...     ['m', 'mongoose']
... ]
>>>
>>> d1, d2 = dict(list1), dict(list2)
>>> common_keys = set(d1) & set(d2)  # => {'b', 'm'}  keys that appears in both dicts.
>>> [[d1[k], d2[k]] for k in common_keys]
[['banana', 'buffalo'], ['mango', 'mongoose']]

相关问题 更多 >