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

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

mydict[mydict.keys()[0]]

有什么更好的方法吗?

#1楼

如果您只需要访问一个元素(由于字典不能保证排序,则是第一个偶然的元素),您只需在

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不保证对这些方法中的任何一个的2个连续调用将返回具有相同顺序的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

#2楼

在python3中,方式:

dict.keys()

返回类型为dict_keys()的值,当通过这种方式获得dict的键的第一个成员时,我们将得到一个错误:

dict.keys()[0]

TypeError: 'dict_keys' object does not support indexing

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

list(dict.keys())[0]

#3楼

对于Python 2和3:

import six

six.next(six.itervalues(d))

#4楼

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

next(iter(mydict.values()))

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

mydict.itervalues().next()

如果希望它在Python 2和3中都可以使用,则可以使用以下six包:

six.next(six.itervalues(mydict))

尽管在这一点上它还是很神秘的,但我还是更喜欢您的代码。

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

key, value = mydict.popitem()

注意,“第一”在这里不是合适的术语。 这是“任何”项目,因为dict不是有序类型。

#5楼

正如其他人提到的那样,由于字典没有保证的顺序(它们被实现为哈希表),因此没有“第一项”。 例如,如果您想要与最小键相对应的值,则thedict[min(thedict)]将执行此操作。 如果您关心密钥的插入顺序,即“首先”是指“最早插入”,那么在Python 3.1中,您可以使用collections.OrderedDict ,即将在即将发布的Python 2.7中使用; 对于旧版本的Python,请下载,安装并使用有序的dict反向移植(2.4及更高版本),您可以在此处找到。

Python 3.7 现在,字典按插入顺序排序。

#6楼

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

next(dict.itervalues())

这样,我们避免了项目查找,并生成了我们不使用的键列表。

Python3

next(iter(dict.values()))

#7楼

在python3中

list(dict.values())[0]

#8楼

这个怎么样。 这里还没有提到。

py 2&3

a = {"a":2,"b":3}

a[list(a)[0]] # the first element is here

>>> 2

#9楼

拿到钥匙

next(iter(mydict))

获得价值

next(iter(mydict.values()))

两者兼得

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

前两个是Python 2和3。后两个在Python 3中是惰性的,但在Python 2中则不是。

#10楼

您可以随时这样做:

for k in sorted(d.keys()):

print d[k]

如果排序对您有任何意义,这将为您提供一致的排序键(关于内置 .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())

请注意,字典在打印时已排序。 但是键集本质上是一个哈希图!

#11楼

没有外部库,可在Python 2.7和3.x上运行:

>>> list(set({"a":1, "b": 2}.values()))[0]

1

对于aribtrary键,只需忽略.values()

>>> list(set({"a":1, "b": 2}))[0]

'a'

#12楼

dict子类化是一种方法,尽管效率不高。 如果您提供整数,它将返回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'

#13楼

python3的最简单方法:

list(dict.keys())[0]

#14楼

first_key, *rest_keys = mydict

#15楼

根据@alldayremix的评论更新@swK的答案:

在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

asdfgh0077

发布了0 篇原创文章 · 获赞 2 · 访问量 5877

私信

关注

标签:Python,mydict,list,keys,dict,first,任意,字典

来源: https://blog.csdn.net/asdfgh0077/article/details/104079394

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值