我如何写一个理解来提取key='a‘的所有值?
alist=[{'a':'1a', 'b':'1b'},{'a':'2a','b':'2b'}, {'a':'3a','b':'3b'}]
下面的方法是有效的,但我只是在我得到我想要的东西之前进行了修改。这不是一个好的学习方法。
[alist['a'] for alist in alist if 'a' in alist]
在理解中,我一直在尝试使用if key='a' in alist else 'No data'
发布于 2013-07-10 02:59:13
[elem['a'] for elem in alist if 'a' in elem]
可能是一种更清晰的方式来表达你上面所说的。
"for elem in alist“部分将遍历alist,允许遍历alist中的每个字典。
然后,"if 'a‘in elem“将确保关键字'a’在查找发生之前就在字典中,这样您就不会在试图查找字典中不存在的元素时得到KeyError。
最后,取elem'a‘给出每个字典中关键字'a’的值。然后,这整个语句将给出每个字典中关键字为'a‘的值列表。
希望这能让它变得更清晰。
发布于 2013-07-10 02:53:54
您可以执行以下操作:
alist=[{'a':'1a', 'b':'1b'},{'a':'2a','b':'2b'}, {'a':'3a','b':'3b'}]
new_list = [a.get('a') for a in alist]
如果您想将其仅限于具有关键字a
字典,
new_list = [a.get('a') for a in alist if a.get('a')]
基于gnibbler的建议:
new_list = [a.get('a') for a in alist if 'a' in a ]
发布于 2013-07-10 03:06:59
我认为你需要一个ternary expression;
[dic['a'] if 'a' in dic else 'No Data' for dic in alist]
或者使用dict.get
[dic.get('a','No Data') for dic in alist]
https://stackoverflow.com/questions/17561695
复制