我有一个项目字典,列表格式为 {(x,y):z,(x,y):z ...}其中x和y是坐标,z是概率。我需要使用概率执行操作。我怎样才能访问这些?
我尝试过像
这样的事情 for item in lst:
print item[1]
但是,只返回y坐标。尝试打印项目[2]返回错误"需要2个以上的值来解压"
答案 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
如果你想要一个元组列表,你可以用
轻松转换它>>> [ (coordinates, probabilities) for coordinates, probabilities in l.items() ]
[((1, 2), 0.5), ((3, 4), 0.9)]
在您的版本中,您解压缩字典的键,这些键是tuple
和x
坐标的y
。 print item[1]
引用y
坐标(python有基于0
的索引),这不是你想要的。