Sta*_*tan 474 python dictionary
如果a mydict不为空,我访问任意元素:
mydict[mydict.keys()[0]]
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?
dou*_*lep 558
在Python 3上,非破坏性和迭代地:
next(iter(mydict.values()))
Run Code Online (Sandbox Code Playgroud)
在Python 2上,非破坏性和迭代地:
mydict.itervalues().next()
Run Code Online (Sandbox Code Playgroud)
如果您希望它在Python 2和3中都有效,您可以使用该six包:
six.next(six.itervalues(mydict))
Run Code Online (Sandbox Code Playgroud)
虽然在这一点上它是相当神秘的,我宁愿你的代码.
如果要删除任何项目,请执行以下操作:
key, value = mydict.popitem()
Run Code Online (Sandbox Code Playgroud)
请注意,"first"在这里不是一个合适的术语.这是"任何"项目,因为dict它不是有序类型.
swK*_*swK 128
如果您只需要访问一个元素(第一个是偶然的,因为dicts不保证排序),您可以在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
Run Code Online (Sandbox Code Playgroud)
请注意(据我所知)Python不保证对这些方法中的任何一个的连续两次调用将返回具有相同排序的列表.Python3不支持此功能.
Xb7*_*kjb 56
在python3中,方式:
dict.keys()
Run Code Online (Sandbox Code Playgroud)
返回类型中的值:dict_keys(),这样得到dict键的第一个成员时会出错:
dict.keys()[0]
TypeError: 'dict_keys' object does not support indexing
Run Code Online (Sandbox Code Playgroud)
最后,我将dict.keys()转换为list @ 1st,并通过list splice方法获得第一个成员:
list(dict.keys())[0]
Run Code Online (Sandbox Code Playgroud)
max*_*lec 24
next(iter(mydict))
Run Code Online (Sandbox Code Playgroud)
next(iter(mydict.values()))
Run Code Online (Sandbox Code Playgroud)
next(iter(mydict.items())) # or next(iter(mydict.viewitems())) in python 2
Run Code Online (Sandbox Code Playgroud)
前两个是Python 2和3.最后两个在Python 3中是懒惰的,但在Python 2中则不然.
Ale*_*lli 16
正如其他人所提到的,没有"第一项",因为字典没有保证顺序(它们被实现为哈希表).例如,如果您想要与最小键对应的值,则thedict[min(thedict)]可以执行此操作.如果你关心键的插入顺序,即"first"你的意思是"插入最早",那么在Python 3.1中你可以使用collections.OrderedDict,它也在即将发布的Python 2.7中; 对于旧版本的Python,请下载,安装和使用您可以在此处找到的有序dict backport(2.4及更高版本).
Python 3.7 现在 dicts是有序的插入.
Mat*_*ner 11
忽略围绕dict排序的问题,这可能会更好:
next(dict.itervalues())
Run Code Online (Sandbox Code Playgroud)
这样我们就可以避免项目查找并生成我们不使用的密钥列表.
next(iter(dict.values()))
Run Code Online (Sandbox Code Playgroud)
ani*_*ija 11
这个怎么样.这里还没有提到.
py 2&3
a = {"a":2,"b":3}
a[list(a)[0]] # the first element is here
>>> 2
Run Code Online (Sandbox Code Playgroud)