python 中字典键的差分运算
Difference operations in dictionary keys in python
我正在 运行使用 IDLE 编写一些 Python3 代码,我想了解为什么
a = {'a':1,'b':2}
两者:
a.keys()-'a'
(甚至不知道为什么这个有效)和
a.keys()-{'a'}
产生相同的结果。
奇怪的是,一旦在函数内部执行操作(并从 IDLE 调用)或直接从 IDLE 运行 执行操作,第二个选项似乎会产生不同的输出...
字符串是可迭代的字符 – set('abc') == {'a', 'b', 'c'}
。字典键的 -
运算符接受任何可迭代对象,因此 'a'
等同于 {'a'}
那里。
如果您使用更长的字符串,它似乎不再有效。
这里要了解的是要减去的实体种类。
a.keys()
是可迭代的。这只是意味着它可以通过使用 for
或 iter
进行迭代。正式地说,在 python 中,任何东西都是实现 __iter__
函数的可迭代对象。检查这个 link
>> type(a.keys)
>> dict_keys
而 dict_keys
是一个可迭代对象,你怎么知道的?因为它有一个属性 __iter__
.
>> hasattr(a.keys() , '__iter__')
>> True
a.keys()
returns 一个 view
对象。这允许您从自身中减去其他可迭代对象。如文档中所述:
dictview - other
Return the difference between the dictview and the other object (all elements in dictview that aren’t in other) as a new set.
因此,要从 a.keys()
中减去某些内容,该实体也应该是可迭代的。
你的情况:
a.keys() - 'a'
有效,因为字符串在 python
中是可迭代的
>> hasattr('a' , '__iter__')
>> True
所以,字符串是可迭代的
a.keys() - {'a'}
有效,因为 {'a'}
是一个集合,它是一个可迭代的
>> hasattr({'a'} , '__iter__')
>> True
另一方面,如果您尝试这样做:
>> a.keys() - 1
>> TypeError: 'int' object is not iterable
所以,你不能减去两个不可迭代的对象。
希望这会有所帮助:)
我正在 运行使用 IDLE 编写一些 Python3 代码,我想了解为什么
a = {'a':1,'b':2}
两者:
a.keys()-'a'
(甚至不知道为什么这个有效)和
a.keys()-{'a'}
产生相同的结果。
奇怪的是,一旦在函数内部执行操作(并从 IDLE 调用)或直接从 IDLE 运行 执行操作,第二个选项似乎会产生不同的输出...
字符串是可迭代的字符 – set('abc') == {'a', 'b', 'c'}
。字典键的 -
运算符接受任何可迭代对象,因此 'a'
等同于 {'a'}
那里。
如果您使用更长的字符串,它似乎不再有效。
这里要了解的是要减去的实体种类。
a.keys()
是可迭代的。这只是意味着它可以通过使用 for
或 iter
进行迭代。正式地说,在 python 中,任何东西都是实现 __iter__
函数的可迭代对象。检查这个 link
>> type(a.keys)
>> dict_keys
而 dict_keys
是一个可迭代对象,你怎么知道的?因为它有一个属性 __iter__
.
>> hasattr(a.keys() , '__iter__')
>> True
a.keys()
returns 一个 view
对象。这允许您从自身中减去其他可迭代对象。如文档中所述:
dictview - other Return the difference between the dictview and the other object (all elements in dictview that aren’t in other) as a new set.
因此,要从 a.keys()
中减去某些内容,该实体也应该是可迭代的。
你的情况:
中是可迭代的a.keys() - 'a'
有效,因为字符串在 python>> hasattr('a' , '__iter__')
>> True
所以,字符串是可迭代的
a.keys() - {'a'}
有效,因为{'a'}
是一个集合,它是一个可迭代的>> hasattr({'a'} , '__iter__')
>> True
另一方面,如果您尝试这样做:
>> a.keys() - 1
>> TypeError: 'int' object is not iterable
所以,你不能减去两个不可迭代的对象。 希望这会有所帮助:)