【发布时间】:2015-02-07 01:51:56
【问题描述】:
输入:
oldNames = { 'Fruits':['orange', 'Banana', 'Peach', 'mango', 'raspberries']
'Meat': ['Bacon', 'Chicken', 'Ham', 'Steak']
'Food': ['Fruits', 'Rice', 'Beans', 'Meat'] }
示例代码:
oldNames = {} # Defining the dictionary I am creating from the file
newNames = {} # Defining another dictionary where I am planning to change the values
Keys_ = [] # Defining the list to append new values for new dictionary
Values_ = []
def dict_parse():
infiles = [f for f in os.listdir(path) if f.endswith('.pin')] # First few lines gets the match fromt he input file
for infile in infiles:
with open(path + '/' + infile, 'r') as inFile:
infileContents = inFile.read()
PATTERN = re.compile(r'Group (\w+)\s+([^\n]+)\s*\{(.*?)\}', re.DOTALL);
for match in PATTERN.finditer(infileContents):
keyname = match.group(1).strip()
elements = match.group(3).replace(',', '').split()
oldNames[keyname] = elements # I get the correct dictionary values until here.
for keyname, elements in oldNames.items(): # iterating over the keys and values of existing dict
for element in elements: # iterating over values
if (element in oldNames[keyname]): # condition to check if vlaue is a key
newNames = {}
for i in range(len(oldNames[keyname])):
Values_.append( oldNames[keyname][i]) # This part is wrong but not sure how to modify
newNames= dict((k,v) for k,v in (oldNames[keyname], Values_)) # This is not the correct format to form the dict I guess...
else:
newNames = dict((k,v) for k,v in oldNames[keyname])
print new_pinNames["Food"]
if __name__ =='__main__':
dict_parse()
我将这些值作为一个列表。我正在使用 for loop 来遍历值列表,并使用另一个 for loop 来遍历匹配的键的值。我需要将输出作为单个列表并替换键的值,并且与以前的位置相同。发布示例输出以供参考。
我正在打印一个键,但我需要的是一个包含所有已找到并替换的值的新字典。
预期输出:
['orange', 'Banana', 'Peach', 'mango', 'raspberries', 'Rice', 'Beans', 'Bacon', 'Chicken', 'Ham', 'Steak']
参考:
Used this : [This](http://stackoverflow.com/questions/3162166/python-looping-over-one-dictionary-and-creating-key-value-pairs-in-a-new-dictio)
【问题讨论】:
-
您在字典中忘记了逗号。
标签: python dictionary key