字典中的元素是否在python中按特定顺序排列?
我想做点什么:
for i in dict:
for j in dict[e:]:
运行此代码时出错。你将如何实现两个for循环,第二个循环只运行在第二个循环元素之后的元素?
根据要求修改:
是字典class Num:
def __init__(self, sum = 0):
self.sum = sum
我想将所有数字与所有其他数字相乘,并将每个数字的结果添加到成员总和中。 例如:
dict = {1: Num(), 2: Num(), 3: Num()}
所需的for循环可以:
dict[1].sum += 1*2
dict[2].sum += 1*2
dict[1].sum += 1*3
dict[3].sum += 1*3
dict[2].sum += 2*3
dict[3].sum += 2*3
我需要循环
或者说相同:
for i in dict:
for j in dict[e:]:
是否有类似 HashableDict 的内容?
答案 0 :(得分:1)
字典没有订单/索引。您可以使用OrderedDict或首先列出字典项。
mydict.items() #returns your dictionary in list for with tuples(key,value) with order
所以对你来说,
class Num:
def __init__(self, sum = 0):
self.sum = sum
def _add(self,num):
self.sum += num
mydict = {1:Num(), 2:Num(), 3:Num()}
for key in mydict:
mydict[key]._add(sum([key*otherkey for otherkey in mydict if otherkey != key]))
for key,value in mydict.items():
print key,value.sum
输出:
1 5
2 8
3 9
答案 1 :(得分:1)
取决于你想做什么。
如果你想用相同大小的较小块分割dict,你可以通过keys()
来实现:
keys = d.keys()
for key in keys[5:]:
print key, d[key]
答案 2 :(得分:0)
Python有一个OrderedDict
,其中的元素是根据插入时间排序的。
您可以通过以下方式将您的字典转换为有序字典:
orderedDict = OrderedDict(sorted(yourDict.items(), key=lambda t: t[0]))
答案 3 :(得分:0)
现在很清楚你想要做什么,你似乎想要组合键。
import itertools
d = {1: Num(), 2: Num(), 3: Num()}
for i, j in itertools.product(dict.keys(), dict.keys()):
if i != j:
dict[i].sum += i*j
dict[j].sum += i*j