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)
你忘了逗号。 – 2015-02-07 02:02:26