我有一个字典,其中包含文件及其所有者。
files = {
'Input.txt': 'Randy',
'Code.py': 'Stan',
'Output.txt': 'Randy'
}
如何将文件与相似的所有者进行分组以获得类似的内容
{'Randy': ['Input.txt', 'Output.txt'], 'Stan': ['Code.py']}.
答案 0 :(得分:1)
您可以先检索唯一的名称,然后遍历每个名称,将文件分组到该名称下。
# store the names (the keys of the new dict) as a set (keeps elements unique)
names = set(files.values())
# use a list comprehension, iterating through keys and checking the values match each n
d = {}
for n in names:
d[n] = [k for k in files.keys() if files[k] == n]
您还可以选择dict-comprehension:
d = {n:[k for k in files.keys() if files[k] == n] for n in set(files.values())}
结果:
{'Stan': ['Code.py'], 'Randy': ['Input.txt', 'Output.txt']}
答案 1 :(得分:0)
遍历第一个字典,获取键和值。
对于每个值,检查它是否存在于新的空白/空字典中。如果没有,请添加一个(原始值的)键,并为其分配一个空白数组。
无条件地将对应的原始键添加到数组(在第二个字典中)以获得原始值(作为第二个字典中的键)。
下面的伪代码应该使您入门
dict2 = {}
for (key, value in files):
if value not in dict2:
dict2[value] = []
dict2[value].add(key)
print(repr(dict2))