在Python中访问字典中的任意元素

2024-03-28 08:08:46 发布

您现在位置:Python中文网/ 问答频道 /正文

如果mydict不是空的,我将访问任意元素:

mydict[mydict.keys()[0]]

有没有更好的办法?


Tags: 元素keysmydict办法
3条回答

在Python3上,以非破坏性和迭代方式:

next(iter(mydict.values()))

在Python2上,以非破坏性和迭代方式:

mydict.itervalues().next()

如果希望它同时在Python 2和3中工作,可以使用six包:

six.next(six.itervalues(mydict))

虽然在这一点上它是相当神秘的,我宁愿你的代码。

如果要删除任何项目,请执行以下操作:

key, value = mydict.popitem()

注意“第一”在这里不是一个合适的词。这是“any”项,因为dict不是有序类型。

如果您只需要访问一个元素(因为dict不保证排序,所以这是第一个偶然访问的元素),那么您只需在Python 2中执行此操作:

my_dict.keys()[0]     -> key of "first" element
my_dict.values()[0]   -> value of "first" element
my_dict.items()[0]    -> (key, value) tuple of "first" element

请注意(据我所知),Python并不保证对这些方法中任何一个的两次连续调用都将返回具有相同顺序的list。Python3不支持此功能。

在Python 3中:

list(my_dict.keys())[0]     -> key of "first" element
list(my_dict.values())[0]   -> value of "first" element
list(my_dict.items())[0]    -> (key, value) tuple of "first" element

在python3中,方法是:

dict.keys() 

在type:dict_keys()中返回一个值,这样在获取dict的第一个键成员时会出错:

dict.keys()[0]
TypeError: 'dict_keys' object does not support indexing

最后,我将dict.keys()转换为list@1st,并通过list splice方法得到1st成员:

list(dict.keys())[0]

相关问题 更多 >