枚举字典迭代键和值

时间:2017-10-09 22:03:06

标签: python python-3.x dictionary enumerate

我有一个名为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();
            }
        });

    }
}

或者我是否必须使用计数变量?

2 个答案:

答案 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)

请注意,参赛作品不一定是有序的。