迭代时更改字典值

格林费诺

因此,我有以下代码遍历列表并使用数据填充字典。

self.data = [["name1.co.uk", "123", "A", "1.2.3.4"],["name2.com", "122", "NS", "ns1.google.com"]]

for each_list in self.data:
            self.terrarecord[each_list[0].replace('.', '')] = {
                "zone_id": self.zone_id,
                "name": each_list[0] + self.url, # not sure if I need to do this
                "type": each_list[2],
                "ttl": each_list[1],
                "records": [each_list[3].replace('\n', '')]
            }

我意识到这可能不是Python风格,因此,对如何更雄辩地执行此操作的任何建议将不胜感激

Anyhoo,我想做的是向代码循环遍历数据时生成的每个键添加一个随机值。

所以说self.terrarecord[each_list[0].replace('.', '')] = {我想在末尾添加一个随机生成的数字,所以完成的结果可能看起来像这样:

"key123" { # <-- This is the key that needs a random number
    "id": "id",
    "name": "key.co.uk",
    "type": "SOA",
    "records": ["1234 etc"]

}

正如您在循环中看到的那样,它使用data列表中的相同数据来填充多个键,并且第一个键必须是唯一的,因此为什么我要在循环时添加整数。

我希望这是有道理的。这很难解释。

谢谢

伊莱森

这样的事情怎么样:

import random

...
rand_key = random.randint(1, 100)

self.terrarecord[each_list[0].replace('.', '') + str(rand_key)] = {
...
}

您可以使用的参数调整想要从中选择随机数的范围randint()但这并不意味着很难从中访问值dict

此外,还有用这种方法对具有重写,如果数据的潜力each_list[0].replace('.', ''),并rand_key碰巧具有相同的值作为先前的关键。如果这不是问题,则此方法应为您工作。如果是这样,则可以使用时间戳生成“随机”数字:

from datetime import datetime

rand_key = datetime.now().strftime('%Y%m%d%s%f')

除非相同的值each_list[0].replace('.', '')在同一微秒内出现两次,否则它将为您提供唯一的密钥有关传递给的格式代码的说明,请参见http://strftime.org/strftime()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章