我有这个脚本是基于一个数字来排列水果。Python排名和列表
#! /usr/bin/python
fruits = {'Apple':1,'Banana':2,'Pineapple':3}
alist = [(v, k) for k, v in fruits.items()]
alist.sort(reverse=False)
fruit_order = str(alist).translate(None, "[]()'123456789").replace(", , ", " , ",").replace(" ", "")[1:]
print fruit_order
水果是actully(水果)例如
#! /usr/bin/python
import re
from configobj import ConfigObj
config = ConfigObj('sites.conf')
fruits = []
substance = "juice"
target_list = config['MainConfig']['fruits']
for target in target_list:
if re.search(config[target]['Skiplist'], substance, re.M|re.I):
target = target + "'" + ":" + config[target]['Rank'] + ","
fruits.append(target)
else:
print "Dident pass"
fruits1 = "{'" + "'".join(fruits) + "}"
alist = [(v, k) for k, v in fruits1.list()]
alist.sort(reverse=False)
fruit_rank = str(alist).translate(None, "[]()'123456789").replace(", , ", ",").replace(" ", "")[1:]
打印fruit_rank与检查用.append构成一个列表2个打印出一条线,看起来就像在例如试验1
但是iam在example2上仍然出现错误,AttributeError:'str'对象没有属性'list'
而且我无法真正弄清楚这一点。我会怎么做?
iam正在寻找的是在配置文件中我有每个水果的排名,该行应打印出其排名中的水果。
这一行:'fruits1 =“{“” +“””。加入(水果)+‘}’'你似乎打算创建您以前创建的字符串一本字典,但你到底是什么不是字典,而是字符串。你的代码最简单的一行修正就是直接在下面添加'fruits1 = eval(fruits1)'。 – primo
@primo:不,不要使用'eval()'来做这件事。您不应该通过将字符串混合在一起并对它们进行评估来构建字典。这是一个非常糟糕的主意。 – Blender
@Blender我同意。 for循环应该直接构造字典,而不是字符串。 – primo