我有一堆dict只有一个键值对的离子,有时是由我编写的一个脚本生成的,我需要摆脱它们。
为此,我需要获取dict. 说明我的意图的最小可重复示例:
d = {'a': 0}
assert len(d) == 1
k, v = list(d.items())[0]
Run Code Online (Sandbox Code Playgroud)
不知道这是否重复,但我无法使用谷歌找到答案。
有没有更简单的方法来k, v获取d?
如果有人想知道,情况是这样的:
from pathlib import Path
def recur_dir(path, root=''):
first = False
if not root:
assert Path(path).is_dir()
root = path
first = True
report = {'folders': dict(), 'files': []}
for element in Path(path).iterdir():
if element.is_file():
report['files'].append(element.name)
elif element.is_dir():
report['folders'].update(recur_dir(str(element).replace('\\', '/'), root))
folders = report['folders']
for name, folder in list(folders.items()):
if not folder:
folders.pop(name)
if not folder.get('files', None):
folders[name].pop('files', None)
if len(folder['folders']) == 1:
key, value = folder['folders'].popitem()
folders[key] = value
folders.pop(name)
elif not folder['folders']:
folders[name].pop('folders')
if not report.get('files', None):
report.pop('files', None)
if first:
return {path: report}
else:
return {path.replace(root, ''): report}
Run Code Online (Sandbox Code Playgroud)
简而言之,我编写了一个脚本,它递归地列出任何给定目录的内容,并且某些子目录是空的,其他子目录可能包含一个子目录而没有其他内容。
我想删除空子目录并将仅包含一个子目录的子目录名称连接起来以删除不必要的嵌套级别。
这个问题与第二部分有关,我还没有找到一种方法,首先不创建不必要的嵌套级别......
如果您不再需要该字典(正如您的“摆脱它们”所建议的那样):
\nk, v = d.popitem()\nRun Code Online (Sandbox Code Playgroud)\n如果你这样做:
\n(k, v), = d.items()\nRun Code Online (Sandbox Code Playgroud)\n\n
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |