我有一个有序的字典如下:
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。
因此,len(source['a'])
的sqrt为3。
如果数字的位置不能精确地除以3然后在其后面插入1,则将数字3插入可精确划分为3的位置(例如位置3,位置6,位置9)。
获得如下结果:
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"])]
我不知道如何将列表中的项更改为字符串对。顺便说一句,这不是我的作业,我试图构建一个布尔反复引擎,源数据太大,所以我在这里创建了一个简单的示例来解释我想要实现的内容:)
答案 0 :(得分:2)
由于这似乎是一项功课,我会尽力帮助你解决你所面临的问题
我不知道如何将列表中的项目更改为字符串对。
由于需要更新整个列表,最好重新创建它而不是更新它,尽管它可能是列表可变的
考虑一个清单
lst = [1,2,3,4,5]
将其转换为字符串列表,您可以使用列表理解
lst = [str(e) for e in lst]
您也可以使用内置map
作为map(str,lst)
,但是您需要记住,而不是在Py3.X中,map会返回一个地图对象,因此需要相应地处理
理解中的条件最好表达为条件陈述
<TRUE-STATEMENT> if <condition> else <FALSE-STATEMENT>
要获取列表中任何项目的索引,最好的办法是使用内置的enumerate
如果您需要从一系列项目创建格式化的字符串表达式,建议使用format string specifier
"{},{}".format(a,b)
包含list
的任何序列的长度都可以通过内置的len
您可以使用具有分数幂的运算符**
或使用math
模块并调用sqrt
函数来计算平方根
现在你只需要结合上述每个建议来解决你的问题。