我可以创建一个从输入返回字典的函数吗?喜欢:
>>> a = 1
>>> b = 2
>>> d = vars_to_dict(a,b) # or d = vars_to_dict((a,b))
>>> print d
{'a': 1, 'b': 2}
Run Code Online (Sandbox Code Playgroud)
它实际上不一定是一个函数 - 我不相信该函数给出了对象名称。我只是想知道是否有从 vars 创建字典的简写。目前我做了很多这样的事情:
dict(data=data,index=index)
Run Code Online (Sandbox Code Playgroud)
这样我可以在制作字典时选择键名称,但我实际上不需要选择它们,因为它们是变量的名称。
PS:我见过这个问题,但不太一样(我是从变量而不是变量名称开始)
给定 Python 中的变量名称列表,如何创建一个以变量名称作为键(变量值)的字典?
编辑:这是“需要”var-dict 的块之一:
data = []
index = []
for sent in sentences:
sent_data = []
sent_index = []
for word in sent:
sent_data.append(word[0])
sent_index.append((word[1],word[2]))
data.append(sent_data)
index.append(sent_index)
Run Code Online (Sandbox Code Playgroud)
EDIT2:澄清一下:我想知道是否有办法将变量的名称放入字典或字符串中。而不是手动输入。
我正在寻找有关如何完成多模块和多处理程序日志记录的具体建议.我在这里添加了我的简化代码,但我不想偏袒答案 - 告诉我最佳实践是什么.
我想将所有内容记录到一个文件中,然后向控制台发出警告.
这是我level0.py想要它登录到指定文件的我:
import logging
from flask import Flask
from level1 import function1
app = Flask(__name__)
logger = logging.getLogger('logger0')
logger.setLevel(logging.DEBUG)
file_handler = logging.FileHandler('../logs/logger0','w','utf-8')
file_handler.setLevel(logging.DEBUG)
file_format = logging.Formatter('%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d in %(funcName)s]')
file_handler.setFormatter(file_format)
logger.addHandler(file_handler)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
console_format = logging.Formatter('%(message)s')
console_handler.setFormatter(console_format)
logger.addHandler(console_handler)
@app.route('/', methods=['GET', 'POST'])
def function0(foo):
bar = function1(foo)
logger.debug('function0')
...
Run Code Online (Sandbox Code Playgroud)
此外,level1当作为脚本调用时,可以是独立模块.在那种情况下,我希望它记录到另一个文件.下面是level1.py(有重复的日志记录行):
import logging
logger = logging.getLogger('level0.level1')
from level2 import function2
def function1(foo):
bar = function2(foo)
logger.debug('function1')
...
if …Run Code Online (Sandbox Code Playgroud)