我已经构建了一个python字典,如下所示:
result = {}
for fc in arcpy.ListFeatureClasses():
for field in arcpy.ListFields(fc):
result.setdefault(field.name, []).append(fc)
,它获取每个表(要素类)中字段的名称,并将tyhem设置为字典中的键值,然后将表的名称设置为值。这很好,因为我的目标是找出哪些表具有相同的字段。我可以继续讨论这些项目并打印出关键的值对:
for key, value in result.iteritems():
print key + ": " + str(value)
返回:
评论:[u'TM_FC',u'GT_FC',u'HG_FC',u'PO_FC',u'FU_FC']
我想将键值打印出来作为字符串值而不是unicode的东西,所以它看起来像这样:
评论:'TM_FC','GT_FC','HG_FC','PO_FC','FU_FC'
我一直在使用'str'函数和各种其他格式化和转换为字符串的方法,但我总是返回相同的原始值列表。任何人都可以建议一种方法来完成我正在寻找的东西吗?
谢谢, 麦克
答案 0 :(得分:2)
您的代码中的问题是您正在调用str(value),其中value是一个数组。所以会发生的是,数组对象的__str__
函数被调用,并且它有自己的方式来生成基础值的字符串表示。此默认表示使用repr
来显示单个元素的值。因为在这种情况下数组元素是unicode字符串,所以在输出中看到'u'。
作为一种解决方案,您要做的是手动“展开”数组并构建自己的列表表示。这是一种方法:
for key, value in result.iteritems():
print key + ": " + ",".join(["'%s'" % v for v in value])
答案 1 :(得分:0)
我相信这就是你追求的目标
for key, value in result.iteritems():
print key + ": " + str([ str(v) for v in value ])
答案 2 :(得分:0)
result = {u'Comments':[u'TM_FC', u'GT_FC', u'HG_FC', u'PO_FC', u'FU_FC']}
for k,v in result.iteritems():
print u'%s:%s' % (k,map(unicode.encode,v))
使用字符串格式简化,map
使用默认编码将每个值更改为字符串。