因此,我有以下代码遍历列表并使用数据填充字典。
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] 删除。
我来说两句