首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于列表理解和条件的元素比较

基于列表理解和条件的元素比较
EN

Stack Overflow用户
提问于 2019-08-23 07:28:47
回答 6查看 794关注 0票数 2

我有两份表格:

代码语言:javascript
复制
a = [[x1, 1], [x2, 0], [x3, 4], [x4, 12], [x5, 15]]

b = [[x2, 10], [x3, 41], [x7, 50]]

我想我可以在下面这样做,得到ids x1,x2,x3等等。

代码语言:javascript
复制
x = [item for item in b if item in a]

print(x)
[[x2, 10], [x3, 41]]

实际上,我想打印a中b中的元素,并比较它们的值。

代码语言:javascript
复制
[x2, 10] -> [x2, 0]
[x3, 41] -> [x3, 4]

因此,在上面的示例中,只打印if b[0][1] == 0 & a[1][1] != 0中的元素。

任何帮助都将不胜感激!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-08-23 07:42:19

您可以使用:

代码语言:javascript
复制
a = [['x1', 1], ['x2', 0], ['x3', 4], ['x4', 12], ['x5', 15]]

b = [['x2', 10], ['x3', 41], ['x7', 50]]

a_dict = dict(a)

print('    b           a')
for x, val in b:
    if x in a_dict:
        print(f'[{x}, {val}] --> [{x}, {a_dict[x]}]')

产出:

代码语言:javascript
复制
    b           a
[x2, 10] --> [x2, 0]
[x3, 41] --> [x3, 4]
票数 1
EN

Stack Overflow用户

发布于 2019-08-23 07:35:40

像这样的东西可能就是你想要的:

代码语言:javascript
复制
ax = [item[0] for item in a]
x = [item for item in b if item[0] in ax]
print x
票数 1
EN

Stack Overflow用户

发布于 2019-08-23 07:37:59

list comprehensionenumerate的结合

Ex.

代码语言:javascript
复制
a = [['x1', 1], ['x2', 0], ['x3', 4], ['x4', 12], ['x5', 15]]
b = [['x2', 10], ['x3', 41], ['x7', 50]]
x = [a[index] for y in b for index,x in enumerate(a) if y[0] == x[0]]
print(x)

O/P:

代码语言:javascript
复制
[['x2', 0], ['x3', 4]]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57621624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档