我有一个名为regionspointcount
的字典,其中包含区域名称(str
)作为键,并且该区域内的一种特征(int
)的计数值为例如{'Highland':21}
for i, k, v in enumerate(regionspointcount.items()):
。
我想在枚举时迭代字典的键和值。有没有办法做类似的事情:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final MediaPlayer mainSongMP = MediaPlayer.create(this, R.raw.main_copy);
Button playButton = (Button) this.findViewById(R.id.playButton);
Button stopButton = (Button) this.findViewById(R.id.stopButton);
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
mainSongMP.start();
}
});
stopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mainSongMP.stop();
}
});
}
}
或者我是否必须使用计数变量?
答案 0 :(得分:16)
给定字典d
:
d
# {'A': 1, 'B': 2, 'C': 3, 'D': 4}
您可以使用元组解压缩for
循环标头中的键值对。
for i, (k, v) in enumerate(d.items()):
print(i, k, v)
# 0 A 1
# 1 B 2
# 2 C 3
# 3 D 4
要了解为什么需要额外的parens,请查看enumerate
的原始输出:
list(enumerate(d.items()))
# [(0, ('A', 1)), (1, ('B', 2)), (2, ('C', 3)), (3, ('D', 4))]
键值对包装在元组中,因此必须以相同的方式解压缩。
答案 1 :(得分:4)
假设您只想枚举键/值对(并且不需要索引<beans:bean>
),您可以使用i
:
iter()
这会打印类似
的内容d={'A': 1, 'B': 2, 'C': 3, 'D': 4}
for k,v in iter(d.items()):
print(k,v)
请注意,参赛作品不一定是有序的。