将两个循环转换为列表理解

如何解决将两个循环转换为列表理解

我正在尝试为该函数的第3-6行编写一个列表理解。它根据guests_diet中的选择返回相关的餐厅。结果应为字符串“对不起,没有餐厅符合您的限制”。该功能有效,但是我被要求做列表理解。我想出了下面的代码,但结果不正确。有人可以帮忙吗?

尝试的代码产生不正确的结果-

ans = [restaurant.append(key) for key,value in rest_names.items()\
                  for x in range(len(cuisine)) if cuisine[x] in value]

代码-

def no_you_pick(rest_names,cuisine):
    restaurant = []
    for key,value in rest_names.items():
        for x in range(len(cuisine)):
            if cuisine[x] in value:
                restaurant.append(key)
    restaurant.sort()
    if len(restaurant) == 0:
        return "Sorry,no restaurants meet your restrictions"
    elif len(restaurant) == 1:
        return ' '.join(restaurant)
    return ','.join(restaurant)

grading_scale = {"blossom": ["vegetarian","vegan","kosher","gluten-free","dairy-free"],\
             "jacob's pickles": ["vegetarian","gluten-free"],\
             "sweetgreen": ["vegetarian","kosher"]}
guests_diet = ["buttered-lobster"]
print(no_you_pick(grading_scale,guests_diet))

解决方法

以下代码将起作用-

<ul className="tagcloud">
  {tags.group.map((tag,idx) => {
    var index = tag.edges[0].node.frontmatter.tags.indexOf(
      tag.fieldValue
    )

    return (
      <li key={idx}>
        <Link
          to={`/tags/${tag.edges[0].node.fields.tags[index]}`}
          className="transition link"
        >
          {tag.fieldValue}
        </Link>
      </li>
    )
  })}
</ul>

输出:

def no_you_pick(rest_names,cuisine):
    restaurant = [key for key,value in rest_names.items() for x in range(len(cuisine)) if cuisine[x] in value]
    restaurant.sort()
    if len(restaurant) == 0:
        return "Sorry,no restaurants meet your restrictions"
    elif len(restaurant) == 1:
        return ' '.join(restaurant)
    return ','.join(restaurant)

grading_scale = {"blossom": ["vegetarian","vegan","kosher","gluten-free","dairy-free"],\
             "jacob's pickles": ["vegetarian","gluten-free"],\
             "sweetgreen": ["vegetarian","kosher"]}
guests_diet = ["buttered-lobster"]
print(no_you_pick(grading_scale,guests_diet))
print(no_you_pick(grading_scale,['vegan']))

您无需附加到Sorry,no restaurants meet your restrictions blossom,sweetgreen

restaurant 

由于您使用列表推导,因此可以直接构建列表-ans = [restaurant.append(key) for key,value in rest_names.items() for x in range(len(cuisine)) if cuisine[x] in value] ,并且只有符合给定条件的键才会添加到列表中。在这里,您无需编写restaurant,就可以像上面的代码中那样,在restaurant.append(key)上使用列表推导轻松地直接附加键

,

您可以将其替换为以下列表理解:

this.loadingController.create({
      message: 'Loading,please wait...'
    }).then((loading) => {

      loading.present();

      Promise.all([apiCallOne(),apiCallTwo(),apiCallThree()])
        .catch((err) => {
          console.log(err);
          loading.dismiss();
        })
        .then((results) => {
          // do something with results ...
          loading.dismiss();
        });

    });

无需声明restaurant = [key for key,value in rest_names.items()\ if any(item in cuisine for item in value)] 是其上方的空白列表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?