无法访问Python对象的第二项

时间:2017-11-03 18:48:46

标签: python object

我有一个项目字典,列表格式为 {(x,y):z,(x,y):z ...}其中x和y是坐标,z是概率。我需要使用概率执行操作。我怎样才能访问这些?

我尝试过像

这样的事情
    for item in lst:
        print item[1]

但是,只返回y坐标。尝试打印项目[2]返回错误"需要2个以上的值来解压"

5 个答案:

答案 0 :(得分:4)

当您使用字典时,python可以单独检索名称和值。例如:

>>> a = {(1,2): 0.5, (2,3): 0.4}
>>> a.keys()
>>> [(1, 2), (2, 3)]

>>> a.values()
>>> [0.5, 0.4]

因此,您需要对您需要执行的概率进行计算:

for item in a.values():
    print item

每个项目将按顺序输出字典的值。

答案 1 :(得分:1)

您可以使用:

list = {(x1, y1): z1, (x2, y2): z2, ...} # actually a dict
for (x, y), z in list.items():
    print x, y, z

或者这个:

list = {(x1, y1): z1, (x2, y2): z2, ...} # actually a dict
for z in list.values():
    print z

但使用真实list代替dict可能会更好。最好避免提供与list等内置Python组件匹配的变量名称。那么你会有这样的事情:

lst = [(x1, y1, z1), (x2, y2, z2), ...]
for x, y, z in lst:
    print x, y, z

答案 2 :(得分:1)

首先,你没有点亮,这是一个字典,所以你可以使用坐标作为键来访问z:

my_dict = {(x,y): z, (x,y):z...}
my_dict[(x, y)]

在for循环中:

for probability in my_dict.values():
    print(probability)

我建议您不要使用名单,因为它是内置的

答案 3 :(得分:1)

对于列表中的项目,一次获取一个项目。那么如何访问第二项呢?这是我为你做的一个例子。这里说的是你的字典d,其中坐标10,20的概率为0.1,而20,30的概率为0.2

d = {(10,20):0.1, (20,30):0.2}
d.items() # this will print- dict_items([((10, 20), 0.1), ((20, 30), 0.2)])
d[(10,20)] # this will print 0.1
d[(20,30)] # this will print 0.2

答案 4 :(得分:0)

如果您在此提供的内容确实是您的数据结构{(x,y): z, (x,y):z...},那么您应该以不同于其他方式进行迭代和解压缩:

Python 3.6.3 (default, Oct  4 2017, 06:09:15)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> l = {(1,2):0.5, (3,4):0.9}
>>> for coordinates, probability in l.items():
...     print(coordinates, probability)
...
(1, 2) 0.5
(3, 4) 0.9

请参阅Documentation

如果你想要一个元组列表,你可以用

轻松转换它
>>> [ (coordinates, probabilities) for coordinates, probabilities in l.items() ]
[((1, 2), 0.5), ((3, 4), 0.9)]

在您的版本中,您解压缩字典的键,这些键是tuplex坐标的yprint item[1]引用y坐标(python有基于0的索引),这不是你想要的。