Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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中,循环一个dict并将list或dict的所有值设置为string_Python_List_Loops_Dictionary - Fatal编程技术网

在Python中,循环一个dict并将list或dict的所有值设置为string

在Python中,循环一个dict并将list或dict的所有值设置为string,python,list,loops,dictionary,Python,List,Loops,Dictionary,我有一个字典“元数据”,它包含字符串、列表、dict和整数的键值对。如何循环使用此字典并将所有不是string或integer类型的值转换为string 是否有任何方法可以同时删除值为空的键?如何在不添加额外循环的情况下执行此操作?用于检查值的类型。在Python 3中,您可以简单地编写: {k:v if isinstance(v, (str, int)) else str(v) for k,v in dct.items() if k != ''} 在较旧的Python版本中,您必须知道没有字

我有一个字典“元数据”,它包含字符串、列表、dict和整数的键值对。如何循环使用此字典并将所有不是string或integer类型的值转换为string

是否有任何方法可以同时删除值为空的键?如何在不添加额外循环的情况下执行此操作?

用于检查值的类型。在Python 3中,您可以简单地编写:

{k:v if isinstance(v, (str, int)) else str(v) for k,v in dct.items() if k != ''}
在较旧的Python版本中,您必须知道没有字典理解(用于检查值的类型。在Python 3中,您只需编写:

{k:v if isinstance(v, (str, int)) else str(v) for k,v in dct.items() if k != ''}
在较旧的Python版本中,您必须知道没有字典理解(这可以:

d={'l':[1,2,3],'s':'abc','i':5,'f':1.23,'di':{1:'one',2:'two'},'emty':''}
{k:v if type(v) in (str,int, long,unicode) else repr(v) for k,v in d.items() if v!=''} 
印刷品:

{'i': 5, 's': 'abc', 'di': "{1: 'one', 2: 'two'}", 'l': '[1, 2, 3]', 'f': '1.23'}
这项工作:

d={'l':[1,2,3],'s':'abc','i':5,'f':1.23,'di':{1:'one',2:'two'},'emty':''}
{k:v if type(v) in (str,int, long,unicode) else repr(v) for k,v in d.items() if v!=''} 
印刷品:

{'i': 5, 's': 'abc', 'di': "{1: 'one', 2: 'two'}", 'l': '[1, 2, 3]', 'f': '1.23'}

你问题的第二部分与你在上一节课上所问的内容相同。至于其他部分,你试过什么?前面问题的答案应该会让你在处理dict内容的一般任务上有一个良好的开端。或者更一般地说,任何不是字符串或整数的类型都应该转换为字符串。@BrenBarn:我不知道如何检测不是整数或字符串的t类型。我也不确定这是如何集成到上一个答案的一行中的。现在我正在进行2次迭代(效率低下),并且正在寻找特定的数据类型(列表+dict)但是我更愿意找到一个更通用的解决方案,除了int+string。听起来最关键的是要学习函数。@Blckknght谢谢,这就是我要找的。你问题的第二部分和你问的一样。至于其他部分,你尝试了什么?前面问题的答案应该会给你答案摆弄dict内容的一般任务是一个很好的开始。或者更一般地说,任何不是字符串或整数的类型都应该转换为字符串。@BrenBarn:我不确定如何检测不是整数或字符串的类型。我也不确定这如何集成到前面答案的一行中。现在我正在进行两次迭代(效率低下)并且我正在寻找特定的数据类型(列表+目录)但是我更愿意找到一个更通用的解决方案,除了int+string之外,其他的都是。听起来要学习的关键是函数。@Blckknght谢谢,这就是我要找的。这将所有的东西都转换成它的
repr
,它不会单独保留
int
,并在字符串中添加一个额外的引号(例如
“abc”)
变为
“'abc'
”。如果v将删除任何0个整数,则
会将所有内容转换为其
repr
,而不会单独保留
int
s,并在字符串中添加一个额外的引号(例如
“abc”
变为
“'abc'
”)。如果v
将删除任何0个整数,则
。伟大的解决方案(+1)但奇怪的是:为什么要使用
isinstance
而不是
type
?因为
isinstance
将匹配子类。例如,如果有人选择使用比Python内置字符串更快的字符串实现
OptimizedString
(比如说,因为他们总是知道应用程序中的编码,或者字符串连接到网络处理,或者与TCL共享,等等),这仍然有效。仍然有效
int
s。检查
type(v)in…
将错过这些子类。伟大的解决方案(+1)但奇怪的是:为什么要使用
isinstance
而不是
type
?因为
isinstance
将匹配子类。例如,如果有人选择使用比Python内置字符串更快的字符串实现
OptimizedString
(比如说,因为他们总是知道应用程序中的编码,或者字符串连接到网络处理,或者与TCL共享,等等),这仍然有效。仍然有效的
int
s。在…
中检查
type(v)将丢失这些子类。