过滤字典中的值列表

时间:2016-04-02 12:38:23

标签: python python-2.7 dictionary

我有一个名为hash_vs_file的词典 密钥是file_hash 值为file_path(一个或多个文件路径的列表)

我想隔离并打印列表长于一个文件路径的项目。

我正在尝试,没有结果:

for file_hash in hash_vs_file:
    if len(file_path) > 1 in hash_vs_file.items():   
        print file_hash
        print file_path

3 个答案:

答案 0 :(得分:0)

for file_hash, file_path in hash_vs_file.items():
    if len(file_path) > 1:   
        print file_hash
        print file_path

方法.items()为您提供键和值的元组。 您可以使用file_hash, file_path解压缩此元组,以便这样做 您可以在每次迭代中访问每个file_hashfile_path

答案 1 :(得分:0)

请以这种方式使用iteritems()

for file_hash, file_path in hash_vs_file.iteritems():
    if len(file_path) > 1:   
        print file_path
        print file_hash

因为你的方式,你只得到字典的键,所以检查file_path的长度失败。

<强>更新

您要求输出的可读性。 你可以用这种方法激励自己:

print file_path, file_hash

或者这个更好的依赖于format()

print "File Path: {} ------ File Hash: {}".format(file_path,file_hash)

或者,如果您希望它看起来像一个列表,请尝试这样做:

print "[{}, {}]".format(file_path,file_hash)

答案 2 :(得分:0)

或者,你可以使用filter内置函数来返回一个像这样的迭代器:

for file_hash in filter(lambda key: len(hash_vs_file[key]) > 1, hash_vs_file):
    print("{} : {}".format(file_hash, hash_vs_file[file_hash]))

或者您可以将dict comprehension用于新过滤的词典:

hash_vs_file = {fhash: fpath for fhash, fpath in hash_vs_file.items() if len(fpath) > 1}
print(hash_vs_file)