我有一系列文件已经从git中添加/删除/更改/重命名,形式为:[['已添加',file_1_path],['已更改', file_2_path]等]
我有一个我想要比较的文件路径列表。
如果列表中的文件路径与数组的文件路径相同,它应该执行某些操作。如果它不在整个数组中,但如果它在列表中而不在数组中,我应该做其他事情。有谁知道我怎么能解决这个问题?
for file_path in file_paths:
for file_in_array in file_paths_array:
if file_in_array[-1] == file_path :
print('do something')
if file_path not in file_paths_array: # I don't know what to do here and this is not correct.
print('do something else')
答案 0 :(得分:3)
file_paths_array
中的文件集是:
file_set = {x[-1] for x in file_paths_array}
因此,您可以为排除的文件执行逻辑:
[...]
elif file_path not in file_set:
print('do something else')
从你的例子:
file_set = {x[-1] for x in file_paths_array}
for file_path in file_paths:
for file_in_array in file_paths_array:
if file_in_array[-1] == file_path:
print('do something')
elif file_path not in file_set:
print('do something else')
答案 1 :(得分:1)
该列表不是此tak的最佳结构,因为必须一次又一次地搜索。
首先将其转换为字典:
for file_path in file_paths:
if file_path in file_path_map:
print('do something')
else:
print('do something else')
然后您可以轻松访问git的数据:
for file_path in file_paths:
try:
info = file_path_map[file_path]
except KeyError:
print('do something else')
else:
print('do something with file_path and info')
如果您对git的数据感兴趣:
df[, (cols.d0) := lapply(.SD, function(z) z - z[3]) , keyby=K, .SDcols=cols]
更新:这假设可以添加或更改或删除一个文件路径,即它只在列表中出现一次。如果不是这种情况,则必须修改代码。