如何获取python字典中的第一个值
Posted
技术标签:
【中文标题】如何获取python字典中的第一个值【英文标题】:How to get the first value in a python dictionary 【发布时间】:2014-03-22 17:39:08 【问题描述】:我有一本这样的字典:
myDict =
'BigMeadow2_U4': (1609.32, 22076.38, 3.98),
'MooseRun': (57813.48, 750187.72, 231.25),
'Hwy14_2': (991.31, 21536.80, 6.47)
如何获取字典中每个项目的第一个值?
我想要一个列表:
myList = [1609.32,57813.48,991.31]
【问题讨论】:
Adict
是无序的。这意味着字典中的元素没有排序 - 您需要通过与它们关联的键来访问值。所以请解释为什么myList
中的元素按它们的顺序排列(与键关联的值的第一个元素可能是按排序顺序排列的?)
【参考方案1】:
试试这个方法:
my_list = [elem[0] for elem in your_dict.values()]
机顶盒: 我认为你不应该使用 camelcase,它不是 python 方式
更新: inspectorG4dget 指出,结果不会相同。这是正确的。您应该使用 collections.OrderedDict 来正确实现这一点。
from collections import OrderedDict
my_dict = OrderedDict('BigMeadow2_U4': (1609.32, 22076.38, 3.98), 'MooseRun': (57813.48, 750187.72, 231.25), 'Hwy14_2': (991.31, 21536.80, 6.47) )
【讨论】:
鉴于字典是无序的数据结构,结果总是不一样的。需要为my_list
的元素排序提供更强有力的理由
我找不到一个链接说 CamcelCase 不是 python 方式。 legacy.python.org/dev/peps/pep-0008/#descriptive-naming-styles
只是命名方式不同,很多人更喜欢CamcelCase ;P
好的,因为我现在 CamelCase 不适用于函数名称和变量。我用谷歌搜索了一下,找到了这个:***.com/questions/159720/… 无论如何,这不是严格的规定,我认为你不应该担心这一点。这只是我的通知
当你只想看一个项目时,这不是要迭代整个字典吗?【参考方案2】:
一行...
myList = [myDict [i][0] for i in sorted(myDict.keys()) ]
结果:
>>> print myList
[1609.32, 991.31, 57813.48]
【讨论】:
【参考方案3】:myList = []
for k,v in myDict.items()
myList.append(v[0])
【讨论】:
【参考方案4】:如果您想要有序字典,请使用:
from collections import OrderedDict
ordered = OrderedDict(
('BigMeadow2_U4', (1609.32, 22076.38, 3.98)),
('MooseRun', (57813.48, 750187.72, 231.25)),
('Hwy14_2', (991.31, 21536.80, 6.47))
)
first_values = [v[0] for v in ordered.values()]
输出顺序将与您的输入顺序完全相同。
【讨论】:
注意这一点:因为input dictionary is unordered,当OrderedDict
是从常规dict
创建时,他们无法知道项目将如何排序。 (请参阅课程文档中的倒数第二行)
@Silmathoron,你错了。阅读文档:Ordered dictionaries are just like regular dictionaries but they remember the order that items were inserted
再次阅读我的评论 ;) 我是说如果您从普通的 dict
创建 OrderedDict
而不是在右侧添加它们,您无法判断 'BigMeadow2_U4'
是否是第一个值订购。
哦,是的,在这种情况下你是对的,把它改成元组【参考方案5】:
试试这个。在函数中键入字典和要打印的位置
d = 'Apple': 1, 'Banana': 9, 'Carrot': 6, 'Baboon': 3, 'Duck': 8, 'Baby': 2
print(d)
def getDictKeyandValue(dict,n):
c=0
mylist=[]
for i,j in d.items():
c+=1
if c==n:
mylist=[i,j]
break
return mylist
print(getDictKeyandValue(d,2))
【讨论】:
【参考方案6】:获取第一个值
打印(getDictKeyandValue(d,1))
【讨论】:
以上是关于如何获取python字典中的第一个值的主要内容,如果未能解决你的问题,请参考以下文章