小编Ded*_*raz的帖子

有没有办法为给定变量创建字典 {var_name:var_value} ?

我可以创建一个从输入返回字典的函数吗?喜欢:

>>> 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:澄清一下:我想知道是否有办法将变量的名称放入字典或字符串中。而不是手动输入。

python

6
推荐指数
1
解决办法
437
查看次数

对于具有指定编码的多个模块和多个处理程序,最具pythonic的日志记录方式是什么?

我正在寻找有关如何完成多模块和多处理程序日志记录的具体建议.我在这里添加了我的简化代码,但我不想偏袒答案 - 告诉我最佳实践是什么.

我想将所有内容记录到一个文件中,然后向控制台发出警告.

这是我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)

python logging module character-encoding

4
推荐指数
2
解决办法
5626
查看次数

标签 统计

python ×2

character-encoding ×1

logging ×1

module ×1