首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将函数转换为嵌套列表理解(Python)

将函数转换为嵌套列表理解(Python)
EN

Stack Overflow用户
提问于 2018-07-27 07:06:32
回答 1查看 91关注 0票数 -3

有没有人可以把下面的函数转换成一个列表压缩!

代码语言:javascript
复制
 def something(x,y):

  result = []
  for i in x:
    for j in y:
      if i['username'] == j['username']:
       result.append(j)
    if i['username'] != result[len(result)-1]['username']:
      result.append(i)

  return result

这是我能想到的最好的,但它是不正确的。

代码语言:javascript
复制
result = [user for user in users for contact in contacts if contact['username'] == user['username']]

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-27 07:24:39

由于if i['username'] != result[len(result)-1]['username']: result.append(i)真正做的是在y中找不到匹配iusername时附加i (因为如果在y循环中有任何匹配,result中的最后一项将具有与i相同的username ),因此您可以使内部循环成为一个子列表,如果该子列表为空,则使用or运算符默认为[i],最后使用嵌套列表理解来扁平化列表:

代码语言:javascript
复制
result = [a for s in [[j for j in y if i['username'] == j['username']] or [i] for i in x] for a in s]

或者,如果您喜欢后一个代码示例中的变量名称:

代码语言:javascript
复制
result = [a for s in [[contact for contact in contacts if user['username'] == contact['username']] or [user] for user in users] for a in s]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51548633

复制
相关文章

相似问题

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