首页 > 解决方案 > 如果 dict key[0][value] 中的行得到 key[1][value]

问题描述

我不确定标题是否正确,但这是我想要做的,这应该是一个简单的任务。

我有一个字典:

dict = {u'a': {0: u'1', 1: u'2'}, u'b': {0: u'A', 1: u'B'}}

然后我有一个数据框。

Num       Letter
1           
3          C
4          D

我想做的是

for index, row in df.iterrows():
    if row[0] in dict['a'].values():
    [row[1]] = dict['b'[0]] <- this isn't correct, but is what i'm trying to do

所以我想从字典中计算数据框中 row[1] 的值。

我知道我可以将 dict 转换为 df 并合并、追加等,但我需要使用 dict 进行更新。

我确信有一个简单的解决方案,但我似乎无法找到它。有谁知道用dict做到这一点的正确方法?

同样,我需要使用字典。

标签: python

解决方案


我猜你正在寻找更多的东西:

if row[0] in d['a'].values():
    row[1] = d['b'][row[0]]

我在这里做了几件事。首先,dict它是一个内置的 Python 函数,所以我将你的字典命名d为不与它冲突。

其次,在这个表达式中:

d['b'[0]]

从内到外读取它,它获取 string 'b',获取它的第一个字母,然后在字典中查找它。如果您将其重写为:

d['b'][row[0]]

它在字典中查找键'b',然后在结果字典中获取带有键的元素row[0]

最后,在左侧:

[row[1]] = ...

不是一个有效的分配。你只想设置现有数组的第二个值,所以你会写

row[1] = ...

推荐阅读