-2

我有一个有序的字典,如下所示:

source =([('a',[1,2,3,4,5,6,7,11,13,17]),('b',[1,2,3,12])])

我想先计算每个键值的长度,然后计算sqrt它的长度,比如说它是L

在可以无余数的位置插入L ,在其他数字后插入“1”。

例如,source['a'] = [1,2,3,4,5,6,7,11,13,17]它的长度是 9。因此 sqrt oflen(source['a'])是 3。

在可以被3整除的位置插入数字3(例如位置3,位置6,位置9)如果数字的位置不能被3整除,则在其后插入1。

要获得如下结果:

result=([('a',["1,1","2,1","3,3","4,1","5,1","6,3","7,1","11,1","13,3","10,1"]),('b',["1,1","2,2","3,1","12,2"])]

我不知道如何将列表中的项目更改为字符串对。顺便说一句,这不是我的家庭作业,我正在尝试构建一个布尔检索引擎,源数据太大,所以我只是在这里创建了一个简单的示例来解释我想要实现的目标:)

4

1 回答 1

2

由于这似乎是一项家庭作业,我将尽力帮助您解决您面临问题的部分

我不知道如何将列表中的项目更改为字符串对。

由于需要更新整个列表,最好重新创建它而不是就地更新它,尽管它可能因为列表是可变的

考虑一个列表

lst = [1,2,3,4,5]

要将其转换为字符串列表,您可以使用列表推导

lst = [str(e) for e in lst]

你也可以使用内置的mapas map(str,lst),但是你需要记住,比在 Py3.X 中,map 返回的是一个 map 对象,所以需要做相应的处理

理解中的条件最好表示为条件语句

<TRUE-STATEMENT> if <condition> else <FALSE-STATEMENT>

要获取列表中任何项目的索引,最好的办法是使用内置的enumerate

如果您需要从一系列项目创建格式化字符串表达式,建议使用格式字符串说明符

"{},{}".format(a,b)

包括 a 在内的任何序列的长度list都可以通过内置的len来计算

您可以使用**具有分数幂的运算符或使用math模块并调用sqrt函数来计算平方根

现在你只需要结合上面的每一个建议来解决你的问题。

于 2013-03-03T07:25:46.670 回答