【问题标题】:Insert number to a list将号码插入列表
【发布时间】:2013-03-03 07:06:38
【问题描述】:

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

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

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

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

例如source['a'] = [1,2,3,4,5,6,7,11,13,17]长度为9。 因此len(source['a']) 的 sqrt 是 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"])]

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

【问题讨论】:

  • 如果这是一个标准的 Python 字典,那么它不是有序的。您需要使用 collections.OrderedDict(也许您会这样做?)。
  • 向我们展示您的尝试或您认为可以解决问题的方法总是一个好主意,即使完全错误。

标签: python python-2.7 insertion


【解决方案1】:

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

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

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

考虑一个列表

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

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

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

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

理解中的条件最好用条件语句来表达

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

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

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

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

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

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

现在您只需结合上述每个建议即可解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    相关资源
    最近更新 更多