我有一个名为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
答案 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_hash
和file_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)