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

mydict[mydict.keys()[0]]

还有什么更好的办法吗?


当前回答

你可以做:

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!

其他回答

在Python 3中,非破坏性和迭代性:

next(iter(mydict.values()))

在Python 2中,非破坏性和迭代性:

mydict.itervalues().next()

如果你想让它在python2和python3中都能工作,你可以使用six包:

six.next(six.itervalues(mydict))

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

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

key, value = mydict.popitem()

请注意,“first”在这里可能不是一个合适的术语,因为dict在Python < 3.6中不是有序类型。Python 3.6+字典是有序的。

子类化字典是一种方法,但效率不高。这里如果你提供一个整数,它将返回d[list(d)[n]],否则按预期访问字典:

class mydict(dict):
    def __getitem__(self, value):
        if isinstance(value, int):
            return self.get(list(self)[value])
        else:
            return self.get(value)

d = mydict({'a': 'hello', 'b': 'this', 'c': 'is', 'd': 'a',
            'e': 'test', 'f': 'dictionary', 'g': 'testing'})

d[0]    # 'hello'
d[1]    # 'this'
d['c']  # 'is'

As others mentioned, there is no "first item", since dictionaries have no guaranteed order (they're implemented as hash tables). If you want, for example, the value corresponding to the smallest key, thedict[min(thedict)] will do that. If you care about the order in which the keys were inserted, i.e., by "first" you mean "inserted earliest", then in Python 3.1 you can use collections.OrderedDict, which is also in the forthcoming Python 2.7; for older versions of Python, download, install, and use the ordered dict backport (2.4 and later) which you can find here.

Python 3.7 现在字典是按插入顺序排列的。

在python3

list(dict.values())[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]