Python:在元组列表的字典中访问单个值

时间:2016-07-01 14:37:21

标签: python dictionary tuples

我在Python中有一个字典,其中每个键都有一组十个元组。我试图遍历字典访问每个元组中的各个元素 - 我应该怎么做?

字典看起来像这样:

    {'Key1': [(Hi, 1), (Bye, 2)], 'Key2': [(Cats, Blue), (Dogs, Red)]}

说我想要Keys的矢量,第一个元素的矢量[Hi,Bye,Cats,Dogs]和第二个[1,2,蓝色,红色]之一

这是我正在尝试的代码:

    for key in dict:
        for tuplelist in dict:
             key_vector.append(key_
             tuple1_vector.append(dict[key[1]])
             tuple2_vector.append(dict[key[2]])

我知道这是不正确的,但我不确定如何修复它。

3 个答案:

答案 0 :(得分:1)

我认为你的意思是你的意思是:

your_dict = {'Key1': [('Hi', 1), ('Bye', 2)], 'Key2': [('Cats', 'Blue'), ('Dogs', 'Red')]}

您可以迭代所有键,获取其中的任何元组,然后迭代该元组内的所有条目。可能有一种更简单的方法,但这至少可以让你到达那里:

for key in your_dict:
    for t in your_dict[key]:
        for i in t:
            print(i)

答案 1 :(得分:1)

您可以使用.values()访问字典中的值,然后遍历值列表并索引元组中的相应项:

tuple1_vector = []
tuple2_vector = []
for v in d.values():
    for t in v:
        tuple1_vector.append(t[0])
        tuple2_vector.append(t[1]) 

您也可以使用列表理解来执行此操作:

tuple1_vector = [t[0]  for v in d.values() for t in v]
tuple2_vector = [t[1]  for v in d.values() for t in v]

print(tuple1_vector)
# ['Cats', 'Dogs', 'Hi', 'Bye']
print(tuple2_vector)
# ['Blue', 'Red', 1, 2]

答案 2 :(得分:0)

您可以执行以下操作:

keys = []
tuple1 = []
tuple2 = []    
For key in dict:
        keys.append(key)
        tuple1.append(dict[key][0][0])
        tuple1.append(dict[key][0][1])
        tuple1.append(dict[key][1][0])
        tuple1.append(dict[key][1][1])

但是,这是非常糟糕的代码。我只是展示了一个解决方案,但这不值得。其他人做得更好(例如迭代dict [key](例如dict [key]中的项目......)。