如何找到设置和打印值的相似性

时间:2018-08-02 08:58:50

标签: python list dictionary set

我希望制作一个字典和一个列表,然后设置if a.keys() == b,然后打印a.values()

示例:

c = [{'1': '0'}, {'0': '5'},{'2': '0'}]
d = {1,2}

我希望将这两个设置为一组。然后找到所有相似之处,并在不更改顺序的情况下打印值。

例如,我要打印出来。

{'1': '0'}
{'2': '0'}

可以使用set吗?

下面是我的代码:

a = set(c.keys()) & set(d)
print(a)

for x in a:
    y,z = c[x]

2 个答案:

答案 0 :(得分:2)

由于示例集中包含整数,而示例字典中的键是字符串,因此应首先将集合中的整数转换为字符串。之后,您可以简单地遍历列表中的每个字典,如果字典的键与集合相交,则打印字典,因为它是匹配项:

d = set(map(str, d))
for i in c:
    if i.keys() & d:
        print(i)

这将输出:

{'1': '0'}
{'2': '0'}

答案 1 :(得分:1)

首先,您以错误的方式指定了输入值。应该将字典teamA定义为包含键和值的字典,而不是像每个字典那样定义每个字典都包含一项的字典。键应指定为整数而不是字符串。否则,稍后需要将它们从c投射到string。第二项int的指定方式也错误。这应该是整数列表,而不是字典。

以下是正确指定输入值并为您提供所需输出的代码:

d

这将提供c = {1: '0', 0: '5', 2: '0'} d = [1,2] distinct_keys = c.keys() & set(d) # {1, 2} distinct_values = {key: value for key, value in c.items() if key in distinct_keys} # {1: '0', 2: '0'} distinct_values 作为输出。