如何将映射到字典中的键的值与列表中的元素进行比较以避免冗余?

时间:2017-09-30 22:24:03

标签: python list dictionary

我目前有一个列表,用于存储我从文件中读取的URL。然后我通过将这些URL映射到一个简单的密钥(0,1,2,3等)来创建一个字典。 现在我想确保如果同一个URL再次显示它没有映射到不同的密钥。所以我试图做一个条件语句来检查。基本上我想检查列表中的项(URL)是否与字典中任何键的值相同。如果它是我不想再添加它,因为那将是多余的。 我不确定在if条件语句中放入什么内容才能使用。

pairs = {}  #my dictionary
for i in list1:
     if ( i == t for t in pairs ):
        i = i +1
     else:
        pairs[j] = i
        j = j + 1

任何帮助将不胜感激! 谢谢。

3 个答案:

答案 0 :(得分:0)

这可能是您正在寻找的。它将唯一值添加到pairs,从零开始对它们进行编号。重复的值将被忽略,不会影响编号:

pairs = {}
v = 0
for k in list1:
    if k not in pairs:
        pairs[k] = v
        v += 1

答案 1 :(得分:0)

要将列表中的项目映射到增加的整数键,这是一个令人愉快的习语,它使用collections.defaultdict将自己的长度作为默认工厂

import collections

map = collections.defaultdict()
items =  'aaaabdcdvsaafvggddd'
map.default_factory = map.__len__

for x in items:
    map[x]

print(map)

答案 2 :(得分:0)

您可以通过简单的pairs.values()访问dict(对)中的所有值。在if条件下,您可以添加另一个条件来检查字典值中是否已存在新项目。