Python:AttributeError:';str';对象没有属性';获取';:λ+;地图

Python:AttributeError:';str';对象没有属性';获取';:λ+;地图,python,dictionary,lambda,Python,Dictionary,Lambda,我正在尝试这样做:我的字典和操作: dict = {'a': {'b': 2}} 本词典中的赋值:现在计算本词典 dict(map(lambda x:x.get('a').get('b'), dict)) 但在输入上述行代码后,我出现了错误: AttributeError: 'str' object has no attribute 'get' 这有什么不对?当您以迭代器的身份访问字典d时,您会对键进行迭代。你基本上在做什么 dict(map(lambda x:x.get('a').get

我正在尝试这样做:我的字典和操作:

dict = {'a': {'b': 2}}
本词典中的赋值:现在计算本词典

dict(map(lambda x:x.get('a').get('b'), dict))
但在输入上述行代码后,我出现了错误:

AttributeError: 'str' object has no attribute 'get'

这有什么不对?

当您以迭代器的身份访问字典
d
时,您会对键进行迭代。你基本上在做什么

dict(map(lambda x:x.get('a').get('b'), ['a']))

当您以迭代器的身份访问字典
d
时,您会对键进行迭代。你基本上在做什么

dict(map(lambda x:x.get('a').get('b'), ['a']))

这是地图上的文件:

尝试:


这是地图上的文件:

尝试:


我不知道你为什么在这里使用
map
。遍历字典只会得到键,它们是字符串。直接使用dict;您也不需要
lambda

my_dict.get('a').get('b')

(如评论中所述,您不应该使用
dict
作为变量名。)

我不确定您为什么在这里使用
map
。遍历字典只会得到键,它们是字符串。直接使用dict;您也不需要
lambda

my_dict.get('a').get('b')

(如注释中所述,您不应使用
dict
作为变量名称。)

您在此处尝试的操作是错误的。在Python中,无法将字典传递给
lambdas
,从而获得所需的结果。与其执行任何操作,不如让我们看看这里发生了什么

>>> dict = {'a': {'b': 2}}
>>> map(lambda x: x, dict)
['a']
因此您可以看到,传递给
lambda
x
的值是
['a']
,而不是我们原来的字典。这是因为当您以迭代器的形式传递字典时,您会在
键上进行迭代。要支持此功能,请尝试此功能

>>> map(lambda x: x, {1: 'a', 3: 'c'})
[1, 3]
您可以考虑的另一种方法是像
关键字参数那样传递。让我们为lambdas尝试一下,并使用
map
获得所需的结果

>>> map(lambda x:x.get('a').get('b'), **dict)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: map() takes no keyword arguments

另外,尽量避免使用与某些内置函数名匹配的变量名。

此处尝试的操作是错误的。在Python中,无法将字典传递给
lambdas
,从而获得所需的结果。与其执行任何操作,不如让我们看看这里发生了什么

>>> dict = {'a': {'b': 2}}
>>> map(lambda x: x, dict)
['a']
因此您可以看到,传递给
lambda
x
的值是
['a']
,而不是我们原来的字典。这是因为当您以迭代器的形式传递字典时,您会在
键上进行迭代。要支持此功能,请尝试此功能

>>> map(lambda x: x, {1: 'a', 3: 'c'})
[1, 3]
您可以考虑的另一种方法是像
关键字参数那样传递。让我们为lambdas尝试一下,并使用
map
获得所需的结果

>>> map(lambda x:x.get('a').get('b'), **dict)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: map() takes no keyword arguments


另外,尽量避免使用与某些内置函数名匹配的变量名。

dict
是变量还是函数?不要重复使用内置函数的名称!
dict
是变量还是函数?不要重复使用内置函数的名称!为了让自己相信字典是不可编辑的,请尝试
因为d中的i:print(i)
您将打印字典中的所有键
d
好的,我的措辞不好。字典是可以阅读的。但是在这种情况下,他的语法意味着你正在映射字典的键,因此出现了错误。在本例中,他的x是一个字典键,恰好是一个字符串。我怀疑这是他想要的。嗨,布列塔,你的答案是我找到的最好的答案,我得到的答案是:<代码>>>>映射(lambda x:x.get('a')。get('b'),(d,)[2]
通过此获取答案:但这不适用于字典():<代码>>>>dict(映射(lambda x:x.get('a')。get('b'),(d,))回溯(最近一次调用):文件“”,第1行,类型错误:无法将字典更新序列元素#0转换为序列
我想要字典中的结果。我真的不明白您想要的输出是什么。在这里,lambda函数接受一个字典(d),并返回d.get('a')。get('b),在您的示例中,它是一个整数。我想我的问题是,如果你想要一本字典,你希望它包含什么(用你的例子)?为了让你自己相信字典是可编辑的,试着用
因为我在d:print(I)
你会打印字典
d
中的所有关键字好吧,我的措辞不好。字典是可以阅读的。但是在这种情况下,他的语法意味着你正在映射字典的键,因此出现了错误。在本例中,他的x是一个字典键,恰好是一个字符串。我怀疑这是他想要的。嗨,布列塔,你的答案是我找到的最好的答案,我得到的答案是:<代码>>>>映射(lambda x:x.get('a')。get('b'),(d,)[2]
通过此获取答案:但这不适用于字典():<代码>>>>dict(映射(lambda x:x.get('a')。get('b'),(d,))回溯(最近一次调用):文件“”,第1行,类型错误:无法将字典更新序列元素#0转换为序列我想要字典中的结果。我真的不明白您想要的输出是什么。在这里,lambda函数接受一个字典(d),并返回d.get('a')。get('b),在您的示例中,它是一个整数。我想我的问题是,如果你想要一本字典,你希望它包含什么(使用你的例子)同样的错误:AttributeError:'str'对象没有属性'get'@Chandni在这里他试图告诉你你以前在做什么。同样的错误:AttributeError:'str'对象没有属性'get'@Chandni在这里他试图告诉你以前在做什么。你的第一句话:map(lambda x:x,dict)
回溯(最近一次调用):File“”,第1行,在TypeError:argument 2 to map()中必须支持迭代
@Chandni您在那之前是否初始化了字典,如果您使用了其他变量名,请传递它。这只是我在这里使用的一个简单示例,我的代码有2-3个键和多个字典。dict.get('a')。get('b'),我知道这是有效的。我想让它和兰姆达一起工作。用简单的羊肉