问题标签 [python-collections]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3024 浏览

python - Python JSON加载/解码对象列表

我正在尝试弄清楚如何使用以下内容加载名为 foo.json 的文件:

我试过的代码:

我所看到的使用 json.load 解析 json 的所有内容似乎都适用于字典内容,但这个 json 表示对象数组或字典数组。Json.load 似乎甚至不适用于字典数组。也许我需要为此使用不同的 json 解析库。任何帮助表示赞赏。

0 投票
1 回答
96 浏览

python - Python的collection.defaultdict用法的疑惑

我了解 collections.defaultdict 正在为这样的 dict 分配默认值:

或者

然后我在 Python 中看到了 defaultdict 的用法,如下所示:

我对第一行很困惑:

默认值到底是什么?这似乎是一个无限的递归。

0 投票
0 回答
372 浏览

python - 如何从列表列表中动态创建命名元组?

所以我有一个这样的列表列表templist

[['C0', 1, 1], ['NA', 4, 5], ['NA', 3, 7], ['C3', 9, 3], ['NA', 8, 4], ['NA', 7, 5], ['C6', 6, 6], ['NA', 5, 10]]

为上述列表创建命名元组的方式是:

上面的 namedtuple 在打印时必须像这样

[Vertex(NAME='C0', x=1, y=1), Vertex(NAME='NA', x=4, y=5), Vertex(NAME='NA', x=3, y=7), Vertex(NAME='C3', x=9, y=3), Vertex(NAME='NA', x=8, y=4), Vertex(NAME='NA', x=7, y=5), Vertex(NAME='C6', x=6, y=6), Vertex(NAME='NA', x=5, y=10)]

我需要这样,因为我已经添加了另一个距离字段并将其转换为具有嵌套键值对的字典。所以我绝对必须这样。(尝试实施 K-MEANS)

与此相关的其他答案,例如此处的答案,从列表中创建命名元组不能适用于此,因为这是列表列表。编辑:它确实适用,您只需按照评论中的建议修改它

我的问题是,我如何vertices从任何给定的列表列表中动态创建上述格式的命名元组,格式为templist

换句话说,我要做的就是提供一个格式为的列表列表templist(因为该列表是由另一个函数生成的,所以每次运行程序时它都会改变)并以上述格式动态生成一个命名元组vertices

0 投票
4 回答
582 浏览

python - python set union 操作对命名元组表现不佳

我想namedtuple在 python 中创建一组,能够使用联合操作动态添加元素。

下面的代码片段创建了一个setof namedtuple,它表现得很好。

哪个打印

现在,如果我创建另一个namedtuple并将其添加到我setunion操作中,它的行为将不符合预期。

代码片段打印以下输出。

预期的输出应该是:

我是否误解了 API?python2 和 3 都表现出相同的行为。

0 投票
2 回答
308 浏览

python - 根据条件打印元组中的元素计数

我想根据下面的 IF 语句打印项目数。我下面的内容是打印整个列表,7 次,以及每个项目的计数 (1)。那不是我想要的。理想情况下它会返回:

5

1

1

有任何想法吗?

0 投票
0 回答
975 浏览

python - 在 Python 中确保数据完整性的最佳方法

tl;博士

在 Python 中是否有一种高效的数据完整性验证方法?

概要:

我正在开发一个框架,该框架(A)从可由开发人员构建的多个 API 服务中摄取相似类型的数据,(B)允许用户/开发人员创建与数据管道的集成,然后(C)返回交互使用相同或新的 API 服务。

数据流: A -> B -> C

该框架提供的3 个主要设施是:

  1. 给定 API 的共享上下文(允许速率限制设施、帐户凭据等)
  2. 各种数据集成组件的共享上下文(允许一个参与者为管道中的后续参与者生成有用的输出)。
  3. 从 API 传入的实际数据(可能是 websocket 或定期/计划的 API 响应)。

要求:

有了这个,我需要3类型的数据。在每个集合中,数据将具有以下要求:

  1. type包含任何传入 JSON 结构的单个 Python 。
  2. 对象应该是不可变的。
  3. 需要表现出色。目标是尽可能接近实时的 API 交互。

很高兴有:

  1. 在分组或定义文件中简单地定义类型的能力。
  2. 属性应该可以通过名称、键等来引用。
  3. 应该能够有效地序列化到 JSON 或从 JSON 序列化。
  4. 这里的安全性也是一个问题——我们希望相信数据没有被操纵,并且在某些情况下我们希望过滤掉敏感值。

现在在哪里:

这个项目一开始是namedtuples用来翻译dict类似 JSON 结构的,但它需要相当多的扩展。例如:虽然两个不同的 API 具有大部分相似的对象,但该数据的参与者需要它是一致的。这需要为每个 API 建立一个翻译层,为每个 API 创建一组额外的对象定义,并且使对namedtuples库的需求变得更加复杂和繁琐。

下一步对我来说,要么创建一个metaclass基于预定义结构生成不可变对象的类,要么创建一个子类namedtuples,添加几个辅助方法。

有了这个,我想在我推出自己的想法之前,我会联系社区,看看你们中是否有人有任何想法。

0 投票
1 回答
1925 浏览

python - 在 Python 中遍历双端队列的时间复杂度是多少?

迭代的时间复杂度是多少,或者更准确地说,通过 Python 中的集合库中的一个双端队列进行的每次迭代是多少?

一个例子是这样的:

每次迭代都是常数 O(1) 操作吗?还是在每次迭代中执行线性 O(n) 操作来获取元素?

网上有很多关于时间复杂度的资源,以及所有其他双端队列方法,如appendleft, append, popleft, pop。似乎没有关于双端队列迭代的任何时间复杂度信息。

谢谢!

0 投票
1 回答
854 浏览

python - 向量>> python中的数据结构

如何vector<pair<int, pair<int,int>>>在 python 中创建 C++ 数据结构的类比?并按第一个 (int) 参数对其进行排序。我尝试在 python 中使用列表列表,但这不是我想要的。谢谢你。

0 投票
1 回答
1131 浏览

python - 在 Python 中进行模糊键查找的最佳方法是什么?

我有一个问题,我需要在哈希映射中进行模糊查找,即返回与最接近查询的那个键对应的值,在我的例子中是通过 Levenshtein 距离测量的。

我目前的方法是dict使用特殊的查找方法进行子类化,该方法计算针对所有键的 Levenshtein 距离,然后返回得分最低的键的值。基本上是这样的:

这是一个好方法还是我没有想到的更好的解决方案?

0 投票
1 回答
93 浏览

python - 有没有办法从 dict 子类访问底层 dict ?

我想构建一个特殊的 dict 类,它可以选择将它的底层 dict 作为一个整体(不仅仅是单个项目)导出,即像这样:

我知道我可以通过简单地动态构建导出字典来模拟这种行为,或者首先将项目存储在单独的类属性中,但我想知道是否有一种干净的方式来获取整个底层字典直接地。(还是我想多了?)