问题描述
我是一名新程序员,仍在努力学习如何编码。我仍然不太了解所有的技术信息。我正在尝试在字典列表上使用 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
,
- 您只需要一个
for
循环即可获得所需内容。while
循环也是不必要的。例如,
for index,dog in enumerate(Dogs_in_Shelter):
print(index,dog['type'])
- 对于 Python,我们不对变量使用大写字母。仅供参考,Python Naming Convention
在这种情况下,
Dogs_in_Shelter
应该是dogs_in_shelter
,或者只是dogs
。