在python3中,dict_values
、dict_keys
和dict_items
不支持索引
my_dict = {'a': 0', 'b': 1', 'c': 2}
以下所有查询均失败:
my_dict.keys()[1]
my_dict.values()[1]
my_dict.items()[1]
因为这个原因。你知道吗
有时我只想随机抽取字典里的内容。我知道我可以把它们的输出转换成列表。他们是否有其他不需要创建另一个数据结构的getter方法?(我还可以想象,将它们转换为一个列表将创建一个副本,这对于大型词典可能不太管用)。你知道吗
Tags:
如果您只想要一个键、值或项,请使用
next()
和iter()
:键类型在Dictionary view objects下解释,也保证是^{} 和friends的子类。基本上,这意味着您只能指望它们具有
__contains__
、__iter__
和__len__
。你知道吗它们不直接支持索引,因为它们的顺序可能会失效。*但实际上,在Python的任何实现中,它们实际上只有在对字典进行变异时才会失效。这意味着你可以安全地做这样的事情:
基本上,与索引
set
或任何其他非迭代器iterable的方法相同。你知道吗*关于记录哪些行为的实际规则已经改变了几次。目前的版本实际上是这样说的:“它们提供了字典条目的动态视图,这意味着当字典发生变化时,视图会反映这些变化”,这意味着现在可以依赖实用规则。但是,即使您使用的是一个旧版本,例如,显式地只保证对
keys
、values
、items
和相关函数的相邻调用之间的一致性,除非您担心有人编写python2.6或3.1或其他什么的新实现,否则没有理由担心这个问题。当然,您可能希望将其封装在一个更可读的函数中。事实上,我会分两步来做。首先,使用^{} recipes 中的
nth
函数:然后总结键索引:
如果你要随机抽样呢?好吧,字典视图是
Sized
,就像字典本身一样,所以您可以始终使用randrange
:相关问题 更多 >
编程相关推荐