Python 使用lambda的字典中特定键的值?

Python 使用lambda的字典中特定键的值?,python,dictionary,lambda,ipython-notebook,graphlab,Python,Dictionary,Lambda,Ipython Notebook,Graphlab,我有一个产品阵列,如下表所示: +---------------------------+--------------------------------+--------------------------------+ | name | review | word_count | +---------------------------+-------------

我有一个产品阵列,如下表所示: +---------------------------+--------------------------------+--------------------------------+ | name | review | word_count | +---------------------------+--------------------------------+--------------------------------+ | | | {'and': 5, 'wipes': 1, | | Planetwise | These flannel wipes are OK, | 'stink': 1, 'because' : 2, ... | | Flannel Wipes | but in my opinion ... | | | | | | +---------------------------+--------------------------------+--------------------------------+ | | | {'and': 3, 'love': 1, | | Planetwise | it came early and was not | 'it': 2, 'highly': 1, ... | | Wipes Pouch | disappointed. i love ... | | | | | | +---------------------------+--------------------------------+--------------------------------+ | | | {'shop': 1, 'noble': 1, | | | | 'is': 1, 'it': 1, 'as': ... | | A Tale of Baby's Days | Lovely book, it's bound | | | with Peter Rabbit ... | tightly so you may no ... | | | | | | +---------------------------+--------------------------------+--------------------------------+ 我编写了这段代码,它工作正常:

def wordcount(x):
    if 'and' in x:
        return x['and']
    else:
        return 0

products['and'] = products['word_count'].apply(wordcount);
我的问题:是否有任何方法可以使用
lambda

到目前为止,我所做的是:

products['and'] = products['word_count'].apply(lambda x : 'and' in x.keys());
这只返回列中的
0
1
。我可以在上面的行中添加什么内容,以便
products['和']
包含
键的值(如果该键作为
products['word\u count']中的键存在)


我正在使用ipython笔记本和graphlab。

你的想法是对的。只要返回
x['和']
的值(如果存在),否则
0

例如:

data = {"word_count":[{"foo":1, "and":5}, 
                      {"foo":1}]}
df = pd.DataFrame(data)
df.word_count.apply(lambda x: x['and'] if 'and' in x.keys() else 0)
输出:

0    5
1    0
Name: word_count, dtype: int64

你的想法是对的。只要返回
x['和']
的值(如果存在),否则
0

例如:

data = {"word_count":[{"foo":1, "and":5}, 
                      {"foo":1}]}
df = pd.DataFrame(data)
df.word_count.apply(lambda x: x['and'] if 'and' in x.keys() else 0)
输出:

0    5
1    0
Name: word_count, dtype: int64

我不确定
产品['word\u count'].应用(wordcount)
有什么作用,但从您的问题的其余部分来看,您可以使用
lambda执行以下操作:

products['and'] = (
    lambda p: p['and']['and'] if 'and' in p['and'] else 0)(products)
它有点难看和笨拙,因此我建议改用内置的dictionary
get()
方法,因为它经过调试,更短,更易于维护,速度更快:

products['and'] = products['and'].get('and', 0)

你对使用
lambda
的执着让我想起了一些人所说的:“……如果你唯一的工具是锤子,那么把一切都当作钉子来对待是很有诱惑力的。”

我不确定
产品['word\u count']是什么。apply(wordcount)
可以,但是从你的问题的其余部分来看,而您可以使用
lambda
执行以下操作:

products['and'] = (
    lambda p: p['and']['and'] if 'and' in p['and'] else 0)(products)
它有点难看和笨拙,因此我建议改用内置的dictionary
get()
方法,因为它经过调试,更短,更易于维护,速度更快:

products['and'] = products['and'].get('and', 0)
你对使用
lambda
的执着让我想起了一些人所说的:“……如果你唯一的工具是锤子,那么把一切都当作钉子来对待是很诱人的。”