【发布时间】:2013-06-11 12:08:16
【问题描述】:
我有一个从 MySql DB 获取的字典,ID 是键,值是字符串(确切地说是文件的相对 Windows 路径)。我有另一个列表,其中包含 Windows 路径作为元素。现在,我需要将列表元素与字典值匹配,如果找到完全匹配,我需要检索该元素的键,如果不存在,我将在数据库中更新
我当前的代码:
for line in f1:
line = line.strip()
try:
index = next(k for (k,v) in self.db_file_list.iteritems() if line in v)
file_list_csv.append(index)
这里的问题是:假设我的字典中的值是“abc def”,“a/b/c” 那么如果我搜索值“abc”或“a/b”它仍然会匹配并给我不是我想要的键值。
请帮帮我,我是 Python 的新手。 非常感谢!
~苏拉夫
【问题讨论】:
-
我不清楚你想做什么。您是否正在尝试从键-> 值映射到值-> 键映射?如果是,您确定 value->key 映射是唯一的吗?
-
我认为你把它弄反了。这里所说的“键”实际上是一个值,而你所说的值实际上是一个键。所以像
dict( reverse(x) for x in dic.items() )这样的东西可能会有所帮助。 -
如果你正在寻找逆映射,这是this question的副本
-
嗨@mgilson:是的,值->键映射是唯一的。 DB中的表只是一个文件列表,id是自动递增的,所以它是唯一的。但是即使我使用 dict reverse,它也不能解决部分匹配而不是完全匹配的问题,对吗?谢谢!
标签: python python-2.7 dictionary exact-match