Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列表中的动态变量_Python_Variables_Dynamic - Fatal编程技术网

Python 列表中的动态变量

Python 列表中的动态变量,python,variables,dynamic,Python,Variables,Dynamic,这类似于,但我仍然感到困惑 我以半专有格式获取了大量flo数据。我已经使用Python根据需要剥离数据,并将数据保存到名为badactor.json的json文件中,并以以下格式保存: [saddr为整数,daddr为整数,端口,日期为朱利安,时间为十进制数] 任意示例[10534645361123264436122201426015009] 我想查看我的每周/每月flo日志,并在Julian date之前保存所有内容。首先,我想浏览日志并创建一个根据朱利安事件发生日期命名的列表,即201426

这类似于,但我仍然感到困惑

我以半专有格式获取了大量flo数据。我已经使用Python根据需要剥离数据,并将数据保存到名为
badactor.json的json文件中,并以以下格式保存:

[saddr为整数,daddr为整数,端口,日期为朱利安,时间为十进制数]

任意示例
[10534645361123264436122201426015009]

我想查看我的每周/每月flo日志,并在Julian date之前保存所有内容。首先,我想浏览日志并创建一个根据朱利安事件发生日期命名的列表,即
2014260
,然后将其保存为相同的名称
2014260.json
。我有以下内容,但它给了我一个错误:

#!/usr/bin/python

import sys
import json
import time
from datetime import datetime

import calendar
#these are varibles I've had to use throughout, kinda a boiler plate for now
x=0
templist2 = []
templist3 = []
templist4 = []
templist5 = []
bad = {}
#this is my list of "bad actors", list is in the following format
#[saddr as a integer, daddr as a integer, port, date as Julian, time  as decimal number]
#or an arbitrary example [1053464536, 1232644361, 2222, 2014260, 15009]
badactor = 'badactor.json'

with open(badactor, 'r') as f1:
    badact = json.load(f1)
f1.close()

for i in badact:
    print i[3] #troubleshooting to verify my value is being read in
    tmp = str(i[3])
    print tmp#again just troubleshooting
    tl=[i[0],i[4],i[1],i[2]]
    bad[tmp]=bad[tmp]+tl
    print bad[tmp]
尝试创建变量时出现以下错误:

回溯(最近一次呼叫最后一次):
文件“savetofiles.py”,第39行,在
坏的[tmp]=坏的[tmp]+tl
键错误:“2014260”

执行代码时,“坏”指令中没有键“2014260”

你的问题是:

bad[tmp]=bad[tmp]+tl
你说的是“将t1添加到不存在的东西中。”

相反,你似乎想做:

bad[tmp]=tl

我建议您将
bad
初始化为空,而不仅仅是常规的内置
dict
。i、 e

import collections
  ...
bad = collections.defaultdict(list)
这样,在第一次遇到日期键时,将自动为您创建初始空的
list
值,并且您从
bad[tmp]=bad[tmp]+tl
语句中得到的错误将消失,因为它实际上将变为
bad[tmp]=list()+tl
,其中
list()
call只创建并返回一个空列表-第一次遇到特定日期时


还不清楚您是否真的需要
tmp=str(i[3])
转换,因为任何不可变类型的值都是有效的字典(或
defaultdict
)键,而不仅仅是字符串-假设
i[3]
已经不是字符串。无论如何,如果将结果命名为其他名称,则后续代码的可读性会更高,例如
julian_date=i[3]
(或者
julian_date=str(i[3])
,如果确实需要转换).

在本例中,
tmp
-
'2014260'
引用的键在
bad
中不存在。是否定义了bad?我是否缺少什么?这看起来不像是最简单的工作示例,因为我看不出您在提供的代码中的任何地方都将bad定义为字典?(我可能是瞎的)如果
坏的
没有定义,那将是
名称错误
@TigerhawkT3;如果你试着运行他的代码。他定义了某个不好的地方,但没有在他的MWE中显示出来。他所面临的问题是,坏的是缺少一把钥匙,我们不能说为什么,直到他向我们展示了他是如何添加到他的dict中的。这篇“进口收藏”文章帮了大忙!我现在要走了。如果不想听起来太需要的话,有没有一种更有效的编码方法呢?好吧,你不需要
f1.close()
,因为带有open的
会帮你处理它。如果没有关于
badact
条目包含哪些数据类型的更详细信息,就很难提出任何重要的建议。顺便说一句,你可能应该读一下我的道歉,我试着点击“这个答案很有用”,但如果没有足够的声誉,它不会让我。我想复选标记也属于同一个规则集。谢谢。您可能需要考虑的一个改变是替换<代码>坏[tMP]=坏[tMP] +tl > <代码>坏[tMP]。(TL)< /COD>。因为这样,在<代码>坏< /代码>中的每个日期键的值将是列表的列表,而不是日期上所有项目的一个长合并列表。这样做可能会使
bad
内容的后续处理更容易。