Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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 从具有非none值的元组创建dict_Python - Fatal编程技术网

Python 从具有非none值的元组创建dict

Python 从具有非none值的元组创建dict,python,Python,我有一个元组,在下面给出的代码中有许多None值(如ref中所示)。我正在使用主代码中其他地方定义的ref和self.entries创建一个dictionary def parsing_write(self, filename): # print(self.booklist) datalist = [] writer = BibTexWriter() writer.indent = ' ' for ref in self.booklist:

我有一个
元组
,在下面给出的代码中有许多
None
值(如
ref
中所示)。我正在使用主代码中其他地方定义的
ref
self.entries
创建一个
dictionary

def parsing_write(self, filename):
    # print(self.booklist)
    datalist = []
    writer = BibTexWriter()
    writer.indent = '    '
    for ref in self.booklist:
        print(type(ref))
        print(ref)
        datadict = dict(zip(self.entries, ref))
        datalist.append(datadict)
        print(type(datadict))
        print(type(datalist))
        print(datalist)
代码的结果(如下所示)显然包含无值键,如(函数的完整输出):


('article','ebert2011','\\textit{从头算}通过线性响应形式计算吉尔伯特阻尼参数,'Ebert,H.和Mankovsky,S.和K{\\'o}dderitzsch,D.和Kelly,P.J.,'Phys.Rev.Lett',None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None,None)
[{'Number':无,'bookstitle':无,'Crossred':无,'author':'Ebert,H.和Mankovsky,S.和K{\\'o}Dedritzsch,D.和Kelly,P.J.,“系列”:无,“出版商”:无,“组织”:无,“地址”:无,“章节”:无,“注释”:无,“出版商”:无,“注释”:无,“月”:无,“类型”:无,“机构”:无,“版本”:无,“年”:无,“标题”:“\\textit{从头开始}”通过线性响应形式计算Gilbert阻尼参数,“‘ENTRYTYPE’:‘article’,‘Editor’:无,‘journal’:‘Phys.Rev.Lett’,‘ID’:‘ebert2011’,‘Page’:无,‘HowPublished’:无,‘Pages’:无,‘School’:无}]
但是我希望dict只包含非
None
值的键和值。
我如何才能做到这一点?

使用生成器理解功能过滤掉
无的值:

datadict = dict((k, v) for k, v in zip(self.entries, ref) if v is not None)
你也可以在2.7+中使用听写理解:

datadict = {k: v for k, v in zip(self.entries, ref) if v is not None}

使用生成器筛选出
None

datadict = dict((k, v) for k, v in zip(self.entries, ref) if v is not None)
你也可以在2.7+中使用听写理解:

datadict = {k: v for k, v in zip(self.entries, ref) if v is not None}

使用dict理解来过滤这些值:

datadict = {k: v for k, v in zip(self.entries, ref) if v is not None}

有关理解如何工作的更多信息,请参阅。

使用dict理解筛选这些值:

datadict = {k: v for k, v in zip(self.entries, ref) if v is not None}

有关理解如何工作的更多信息,请参阅。

您想要什么?潜在的重复:@zondo:
{'journal':'Phys.Rev.Lett','title':'\\texit{从头算}通过线性响应形式计算吉尔伯特阻尼参数,'ENTRYTYPE':'article','ID':'ebert2011','author':'Ebert,H.和Mankovsky,S.和K{\\“o}dderitzsch,D.和Kelly,P.J.}
,大概。你想要什么?潜在的重复:@zondo:
{'journal':'Phys.Rev.Lett','title':'\\texit{从头开始}通过线性响应形式计算吉尔伯特阻尼参数,'ENTRYTYPE':'article','ID':'ebert2011','author':'Ebert,H.和Mankovsky S.和K{“o}迪里奇,D.和凯利,P.J.}
,大概是这样。