嵌套for循环和嵌套字典?

问题描述

我是一名新程序员,仍在努力学习如何编码。我仍然不太了解所有的技术信息。我正在尝试在字典列表上使用 for 循环,然后在该循​​环内,我想创建另一个枚举字典键的循环。在该循环内,然后我想打印键和值。一旦索引达到所有点,我希望循环中断。

Dogs_in_Shelter = [{
               "type" : "poodle","age" : "2","size" : "s",},{    
               "type" : "pug","age" : "7","size" : "m",{
               "type" : "lab","age" : "10",}
               ]
for a in Dogs_in_Shelter:
 for index,a in enumerate(Dogs_in_Shelter):
   while (index <= 2): 
     print("{} {}".format(index,a["type"]))
     index += 1 
     break

打印出来的是:

0 poodle
1 pug
2 lab
0 poodle
1 pug
2 lab
0 poodle
1 pug
2 lab

我只想要前三行(带有键和值),而不是重复。 对学习者有什么帮助吗?

edit 是的,有一种没有嵌套循环的更简单的方法,但是我仍然需要将它们嵌套。谢谢!

解决方法

不需要额外的 for 循环和 while 循环。 enumerate 函数为您提供索引,通过传递类型键,您可以获得它的值。

import 'package:flutter/material.dart';
import 'dart:async';

class RefreshWidget extends StatefulWidget {
  RefreshWidget({Key? key,required this.title}) : super(key: key);
  final String title;

  @override
  _RefreshWidgetState createState() => _RefreshWidgetState();
}

class _RefreshWidgetState extends State<RefreshWidget> {
  static List<String> myStrings = ["aaa","bbb","ccc","ddd"];

  int i = 0;
  String _current = myStrings[0];

  void rebuild() {
    Future.delayed(Duration(seconds: 3),() {
      setState(() {
        _current = myStrings[++i % 4];
      });
      rebuild();
    });
  }

  @override
  void initState() {
    rebuild();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Material(child: Center(child: Text(_current)));
  }
}

使用嵌套 for 循环。

这里我使用了计数器 for index,a in enumerate(Dogs_in_Shelter): print("{} {}".format(index,a["type"])) 。我们应该使用 if 来检查计数器,而不是 while。

length = 0
,
  1. 您只需要一个 for 循环即可获得所需内容。 while 循环也是不必要的。例如,
for index,dog in enumerate(Dogs_in_Shelter):
    print(index,dog['type'])
  1. 对于 Python,我们不对变量使用大写字母。仅供参考,Python Naming Convention 在这种情况下,Dogs_in_Shelter 应该是 dogs_in_shelter,或者只是 dogs

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...