如果mydict不为空,则访问任意元素,如下:

mydict[mydict.keys()[0]]

还有什么更好的办法吗?


当前回答

在python3中,方法是:

dict.keys() 

返回一个类型为:dict_keys()的值,当获取dict的key的第一个成员时,我们将得到一个错误:

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

最后,我将dict.keys()转换为list @1st,并通过列表拼接方法获得了第一个成员:

list(dict.keys())[0]

其他回答

忽略字典排序的问题,这样可能会更好:

next(dict.itervalues())

这样就避免了项查找和生成不使用的键的列表。

Python3

next(iter(dict.values()))

你可以做:

for k in sorted(d.keys()):
    print d[k]

这将为您提供一个一致排序的键集(我猜是相对于builtin.hash()),如果排序对您有任何意义,您可以对其进行处理。这意味着,例如,即使扩展字典,数值类型也会保持一致排序。

例子

# lets create a simple dictionary
d = {1:1, 2:2, 3:3, 4:4, 10:10, 100:100}
print d.keys()
print sorted(d.keys())

# add some other stuff
d['peter'] = 'peter'
d['parker'] = 'parker'
print d.keys()
print sorted(d.keys())

# some more stuff, numeric of different type, this will "mess up" the keys set order
d[0.001] = 0.001
d[3.14] = 'pie'
d[2.71] = 'apple pie'
print d.keys()
print sorted(d.keys())

请注意,字典在打印时是排序的。但是键集本质上是一个hashmap!

在python3中,方法是:

dict.keys() 

返回一个类型为:dict_keys()的值,当获取dict的key的第一个成员时,我们将得到一个错误:

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

最后,我将dict.keys()转换为list @1st,并通过列表拼接方法获得了第一个成员:

list(dict.keys())[0]

为了得到钥匙

next(iter(mydict))

得到一个值

next(iter(mydict.values()))

两者兼得

next(iter(mydict.items())) # or next(iter(mydict.viewitems())) in python 2

前两个是Python 2和3。后两个在python3中是lazy,但在python2中不是。

在python3

list(dict.values())[0]