【问题标题】:Attempting to create something using dictionaries but am lost尝试使用字典创建一些东西,但我迷路了
【发布时间】:2011-04-01 14:39:25
【问题描述】:

我不太确定如何在 python 中最好地处理以下内容... 我知道我想要什么,并且知道我想要什么,但我不知道我的想法是否是我正在寻找的最佳方法。

"Name":"path",contains[]
"Folder":"C:/blah/blah/folder",contains["file1","file2","file3"]

喜欢

things={}
things["Folder"]="C:/blah/blah/folder" AND contains["file1","file2","file3"]

所以它可以像这样使用:

for folder,path,contents in things.iteritems():  
    print("%s @ \"%s\" containing:\n\t")%(folder,path)  
    for file in contents:  
        print("%s\n\t")%(file)  

我怎样才能在内容中添加一些东西,比如

content.append(blah)

任何帮助将不胜感激!谢谢。

【问题讨论】:

  • 清理了您的帖子,但仍然不清楚您要查找的内容。前两个块不是真正有效的代码,因此不清楚它们的含义。解释更多你想要发生的事情,而不是发布看起来像代码但不是的东西。
  • 你在想像 os.walk 函数这样的东西吗?
  • @Winston: 尝试做一些我可以使用的东西,而不仅仅是遍历目录。
  • @Daniel:感谢您的清理,仍然习惯了这一点。顶部是不打算编译的东西,只是试图阐明我想要的想法。我对字典有一些了解,但不知道如何在字典中同时存储一个值和一个数组。最后两件事是我试图整体实现的目标。我什至不确定使用字典格式是最好的。

标签: python dictionary


【解决方案1】:

这样的?

>>> d = {}
>>> d["Folder"] = ["C:/blah/blah/Folder", ["file1","file2","file3"]]
>>> d["more"] = ["/home/mydir", ["file1","file2","file3"]]
>>> d["Folder"][0]
'C:/blah/blah/Folder'
>>> d["Folder"][1]
['file1', 'file2', 'file3']
>>> d["Folder"][1].append("file4")
>>> d["Folder"][1]
['file1', 'file2', 'file3', 'file4']
>>> for entry in d:
...     d[entry][1].append("newfile")
...
>>> d
{'Folder': ['C:/blah/blah/Folder', ['file1', 'file2', 'file3', 'file4', 'newfile']],
 'more': ['/home/mydir', ['file1', 'file2', 'file3', 'newfile']]}

【讨论】:

  • +1 用于显示完整的交互式示例。 (REPL 是一个很棒的学习工具。)
【解决方案2】:

我认为您正在寻找嵌套字典:

things = {"Folder" : {"path" : "C:/blah/folder", "contents" : ["file1", "file2"]},
          "Directory" : {"path" :"C:/foo/dir", "contents" : ["fileX", "fileY"]}}
for folder, info in things.iteritems():
  print("%s @\"%s\" containing:\n\t")%(folder, info["path"])
  for file in info["contents"]:
    print("%s\n\t")%(file)

【讨论】:

  • 我觉得你说得对,稍微玩玩,我会回来的,谢谢
【解决方案3】:
things = {}
things["Folder"] = ("C:/blah/blah/folder", ["file1","file2","file3"])

for folder, (path, contents) in things.iteritems():
    print("%s @ \"%s\" containing:\n\t")%(folder,path)  
    for file in contents:  
        print("%s\n\t")%(file)  

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2021-02-12
    • 2017-02-26
    • 2019-12-04
    • 2011-02-18
    • 1970-01-01
    相关资源
    最近更新 更多