我找到了一个解决方案,但速度非常慢:
def chunks(self,data, SIZE=10000):
for i in xrange(0, len(data), SIZE):
yield dict(data.items()[i:i+SIZE])
不使用外部模块(Numpy等),你有什么想法吗?
对于Python3。
在Python 3中,xrange()
被重命名为range()
。
您可以使用;
from itertools import islice
def chunks(data, SIZE=10000):
it = iter(data)
for i in range(0, len(data), SIZE):
yield {k:data[k] for k in islice(it, SIZE)}
样本:
for item in chunks({i:i for i in range(10)}, 3):
print(item)
具有以下输出。
{0: 0, 1: 1, 2: 2}
{3: 3, 4: 4, 5: 5}
{6: 6, 7: 7, 8: 8}
{9: 9}
另一种方法是迭代器压缩:
>>> from itertools import izip_longest, ifilter
>>> d = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6, 'g':7, 'h':8}
创建一个包含dict迭代器副本的列表(副本数是结果dict中的元素数)。通过将每个迭代器从chunks
列表传递到izip_longest
中,您将从源dict中获得所需的元素数(ifilter
用于从zip结果中删除None
)。使用生成器表达式可以降低内存使用率:
>>> chunks = [d.iteritems()]*3
>>> g = (dict(ifilter(None, v)) for v in izip_longest(*chunks))
>>> list(g)
[{'a': 1, 'c': 3, 'b': 2},
{'e': 5, 'd': 4, 'g': 7},
{'h': 8, 'f': 6}]
因为字典太大了,所以最好将所有涉及的项都保持为迭代器和生成器,如下所示
from itertools import islice
def chunks(data, SIZE=10000):
it = iter(data)
for i in range(0, len(data), SIZE):
yield {k:data[k] for k in islice(it, SIZE)}
样本运行:
for item in chunks({i:i for i in xrange(10)}, 3):
print(item)
输出
{0: 0, 1: 1, 2: 2}
{3: 3, 4: 4, 5: 5}
{8: 8, 6: 6, 7: 7}
{9: 9}
问题内容: 我找到了一个解决方案,但确实很慢: 您有没有使用外部模块(numpy等)的任何想法? 问题答案: 由于字典很大,因此最好将所有涉及的项都保留为迭代器和生成器,像这样 样品运行: 输出量
II有一个serie对象包含3列(名称,代码,值),我从下面的函数得到: 意甲看起来像这样 我可以用下面的代码将输出分配给我的数据帧。 我得到的数据框是这样的 如何将此列拆分为3列?
问题内容: 我想做的是一项相当普通的任务,但我在网络上找不到任何参考。我的文字带有标点符号,我想要一个单词列表。 应该 但是只能使用一个参数,因此在用空格分割后,所有单词都带有标点符号。有任何想法吗? 问题答案: 正则表达式合理的情况:
问题内容: 我在这里浏览了一些问题,但这些问题似乎都不是我的问题。假设我有2个字典,它们是dict1 和字典2 我正在编写一个程序,需要将它们结合到一个字典finaldict中 非常感谢您的帮助,我一直在努力,现在已经一无所获 问题答案: 这是通用版本。即使只有键之一存在键,也可以用它来创建一个以值作为列表的字典。 输出量 如果您使用的是Python 2,则必须像这样更改for循环:
本文向大家介绍如何将Python词典保存为CSV文件?,包括了如何将Python词典保存为CSV文件?的使用技巧和注意事项,需要的朋友参考一下 CSV(逗号分隔值)是最常见的文件格式,许多平台和应用程序都广泛支持该格式。 使用Python标准库中的csv模块。最简单的方法是在open()函数的帮助下以“ w”模式打开一个csv文件,并以逗号分隔的形式写入键值对。 csv模块包含DictWriter
我想从数据帧中的文本中提取特定的单词。这些单词我已经输入到字典的列表中,它们属于某些类别(键)。由此,我想创建与存储单词的类别相对应的列。和往常一样,最好用例子来说明: 我有一个数据框: 它创建表: 还有一本我想从中提取的分类词词典。这些单词都是没有符号的自然语言单词,可以包括短语,例如本例中的“alloy wheels”(这不一定是字典,我只是觉得这是最好的方法): 根据这个,我想创建一个如下所