是否存在与列表,字典和集合匹配但与字符串不匹配的Python类型签名?

罗凡尼翁

假设您有一个内置于Python数据结构中的任意JSON对象读入Python。假设您要递归遍历此结构并对所有原始值执行一些操作,然后对集合进行更深层次的递归。

def recursiveMap(something, func):
  if isinstance(something, Collection):
    for item in something:
      return recursiveMap(item, func)
  else:
    return func(something)

所以我的问题是:是否有一个Collection类型,可以匹配列表和字典,但不能匹配字符串?

https://docs.python.org/3.6/library/collections.abc.html#collections-abstract-base-classes采购我的类型,我还没有找到一个:

>>> isinstance("", c.Container)
True
>>> isinstance("", c.Hashable)
True
>>> isinstance("", c.Iterable)
True
>>> isinstance("", c.Sized)
True
>>> isinstance("", c.Callable)
False
>>> isinstance({}, c.Callable)
False
>>> isinstance("", c.Sequence)
True

这不是关于Python是否认为字符串是上面列出的类型中的任何一种的问题,而是关于是否存在其他类型的满足第一个代码中示例算法需求的实际问题。清单。

邓肯

每种处理方法之一就是将您要匹配的所有类型组合在一起。isinstance将使用一个元组类型和一个单一类型:

>>> CollectionTypes = list, dict, set
>>> isinstance("", CollectionTypes)
False
>>> isinstance({}, CollectionTypes)
True
>>>

如果确实找到了与这三种类型完全匹配且不匹配的预定义类型,str则说明您已锁定自己,稍后再决定是否还需要将tuple其他类型或某些其他类型包括在匹配中时,您将回到平方。这就是为什么最好在此处明确说明要匹配的类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

获得“类型不匹配:不能从转换的ArrayList <HashMap的<字符串,字符串>>将列表<地图<String,字符串>>”在实例映射列表

Java的8 - 类型不匹配:不能从列表<Serializable接口>转换为列表<字符串>

无效的操作:currency.Name()==货币(类型不匹配的字符串和* config.Currency)

GoLang类型[]字符串和字符串不匹配

Python重新匹配不匹配以“ .number”结尾的字符串

遍历字符串数组-类型不匹配

类型不匹配:预期的字符串,实际的列

grep匹配和不匹配的字符串部分?

函数的Kotlin类型不匹配返回字符串

指标变量的字符串,类型不匹配错误

Python字符串不匹配

检查字符串之间的单词是否不匹配

jscodeshift抛出错误:与类型字符串不匹配

如何检查参考字符串列表和目标字符串之间是否匹配?

pyparsing以相同的顺序将匹配的字符串和不匹配的字符串分组

文件中的字符串与集合中的字符串不匹配

python返回字符串的匹配和不匹配模式

字符串值与字典值不匹配的C#

Arraylist <Integer>和databean类型的字符串不匹配异常

类型定义字符串与绑定数不匹配

类型不匹配,找到Int必需的字符串

Python中的列表交集和部分字符串匹配

匹配字符串上的类型不匹配

类型不匹配、所需节点、找到的字符串

无法不匹配子字符串和匹配字符串

Rust 中不匹配的字符串类型

用于字符串替换和打印匹配和不匹配字符串的 awk 命令

替换类型不匹配(数字到字符串)

通过列表的 Python 字典进行字符串匹配,并在新列中分配标签