我有這個腳本是基於一個數字來排列水果。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