如何从Python中的迪克列表(其中也包含一个名为“abc”的键)中获取名为“abc”的元素?
>>>y = [{123:'asd', 'xyz':'asff', 'zara':'afasf', 'abc':'afsff'},
{123:'gfg', 'xyz':'sgggh', 'zara':'sghh', 'abc':'sfgbg'}];
>>>a=y[0]
>>>a
{123: 'asd', 'abc': 'afsff', 'xyz': 'asff', 'zara': 'afasf'}
>>>a['abc']
'afsff'
>>>b=y[0:2]
>>>b
[{123: 'asd', 'abc': 'afsff', 'xyz': 'asff', 'zara': 'afasf'},
{123:'gfg', 'xyz':'sgggh', 'zara':'sghh', 'abc':'sfgbg'}]
>>>b['abc']
-------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-98-443ce66e30fa> in <module>()
----> 1 b['abc']
在尝试TypeError时:列表索引必须是整数,而不是str
我需要像sfgbg那样的输出。
发布于 2015-03-18 02:40:18
由于在本例中,b
变量是一个列表,因此需要分别访问其每个元素以查找字典中的值:
>>>b[0]['abc']
'afsff'
>>>b[1]['abc']
'sfgbg'
要一次从每个字典中获取所有值,可以使用for循环:
>>>for nested_dict in b:
... nested_dict['abc']
'afsff'
'sfgbg'
这个操作的缩写将是一个列表组合,如下所示:
>>>[nested_dict['abc'] for nested_dict in b]
['afsff', 'sfgbg']
除非您只想打印这些值,否则使用起来可能会更容易,因为它的计算结果本身就是一个列表,可以对其进行操作。
发布于 2015-03-18 02:53:23
您需要每个字典的'abc'
元素:
from operator import itemgetter
y = [{123:'asd', 'xyz':'asff', 'zara':'afasf', 'abc':'afsff'},
{123:'gfg', 'xyz':'sgggh', 'zara':'sghh', 'abc':'sfgbg'}]
print( map(itemgetter('abc'), y) ) # --> ['afsff', 'sfgbg']
发布于 2015-03-18 03:38:26
“马丁诺”的答案基本上是正确的。
我应该在这里引发的唯一异常是链接到从Python解释器引发的异常,如果键(在本例中为‘abc’,或者在任何其他未定义的情况下为 this other )不能存在于列表中的每个dict中。
为了简化所需值的提取,我可以提出如下建议
`
from operator import itemgetter
list_of_dicts = [{123:'asd', 'xyz':'asff', 'zara':'afasf', 'abc':'afsff'},
{123:'gfg', 'xyz':'sgggh', 'zara':'sghh', 'abc':'sfgbg'}];
current_key = 'abc'
try:
print [itemgetter(current_key)(d) for d in list_of_dicts]
except:
print 'The key %s does not exist inside %s'%(current_key, list_of_dicts)
`
尝试阅读项目吸气剂的Python文档
https://stackoverflow.com/questions/29119683
复制相似问题