在尝试使用list和dict的不同方法,搜索周围等没有成功之后,我可能需要一些帮助来设计Python中的一些数据结构......对于经验丰富的python编码器来说可能很容易但我无法找到正确的语法,然而。
在伪代码中,我想要一个像这样的数据结构:
[Name_str] (Week_Str, anyValue) (Week_str, anyValue) (Week_str, anyValue) ...
在循环中我希望能够将更多和更多的Week_Strings和Values作为元组或其他类型的“连接”数据添加到给定的名称,这样我最终知道名称xxx
那里是下面的一对周字符串和值可用,我可以逐对(以任何方式)显示它们。
对于名字,我认为能够像在字典中那样以哈希方式访问它是非常好的,但这不是必需的。
基本上我想将数据一对一地插入到一个名称的循环中,然后我需要能够遍历显示所有所有属性字符串/值对的所有现有名称(无论如何),例如:
Peter : ('1/15', 7) ('2/15', 3) ('4/15', 4) ('5/15', 2) ('7/15', 2)
Max : ('1/15', 2) ('2/15', 4) ('3/15', 4) ('5/15', 3) ('6/15', 5)
在评论中解释我需要动态构建该结构的方法:
表示List_Names中的名称:
...以某种方式将可用的对Week_Str / Value添加到新的数据结构
答案 0 :(得分:2)
data = {}
data['Peter']=[('1/15', 7), ('2/15', 3)]
data['Max'] = [('1/15', 2), ('2/15', 4)]
这还不错吗?
编辑:要追加,请使用:
data['Peter'].append(('3/15', 6))
答案 1 :(得分:0)
这看起来应该在主词典中使用一组词典:
Peter : ('1/15', 7) ('2/15', 3) ('4/15', 4) ('5/15', 2) ('7/15', 2)
Max : ('1/15', 2) ('2/15', 4) ('3/15', 4) ('5/15', 3) ('6/15', 5)
这很好地映射到了这个:
data = {
"Peter": {'1/15': 7, '2/15': 3, '4/15': 4, '5/15': 2, '7/15': 2},
"Max": {'1/15': 2, '2/15': 4, '3/15': 4, '5/15': 3, '6/15': 5}
}
当然,您可以通过data['Peter']
为data['Peter']['2/15']
个人及其个别周的个人提供帮助。
答案 2 :(得分:0)
您可以从循环创建和访问变量,如下所示:
names = ["Peter", "Max"]
#list of tuples
peter_values = [('1/15', 7), ('2/15', 3), ('4/15', 4), ('5/15', 2), ('7/15', 2)]
max_values = [('1/15', 2), ('2/15', 4), ('3/15', 4), ('5/15', 3), ('6/15', 5)]
values = [peter_values, max_values]
# dictionary, note that dictionaries aren't always iterated in the same order
people = {}
# fill dictionary with data
for i in range(0, len(names)):
people[names[i]] = values[i]
print people
for person in people:
print person
for t1, t2 in people[person]:
print "tuple value 1: %s, tuple value 2: %s" % (t1, t2)
这是输出:
{'Max': [('1/15', 2), ('2/15', 4), ('3/15', 4), ('5/15', 3), ('6/15', 5)], 'Peter': [('1/15', 7), ('2/15', 3), ('4/15', 4), ('5/15', 2), ('7/15', 2)]}
Max
tuple value 1: 1/15, tuple value 2: 2
tuple value 1: 2/15, tuple value 2: 4
tuple value 1: 3/15, tuple value 2: 4
tuple value 1: 5/15, tuple value 2: 3
tuple value 1: 6/15, tuple value 2: 5
Peter
tuple value 1: 1/15, tuple value 2: 7
tuple value 1: 2/15, tuple value 2: 3
tuple value 1: 4/15, tuple value 2: 4
tuple value 1: 5/15, tuple value 2: 2
tuple value 1: 7/15, tuple value 2: 2
修改: 这是另一种方法,它对你有效吗?
people = {"Peter" : [], "Max" : []}
new_values = [('Peter', 'value1', 2), ('Peter', 'value2', 3), ('Max', 'value3', 4), ('Max', 'value3', 4)]
for name, v1, v2 in new_values:
people[name].append((v1, v2))
print people
答案 3 :(得分:0)
在尝试使用list和dict的不同方法,在没有成功的情况下搜索等等之后,我可能需要一些帮助来设计Python中的小数据结构...
如果我想想你想做什么,我想说,你想为一个人增加一周的价值。当您想要搜索特定周的值时,使用元组可以工作,但不太实用。
我会推荐另一种方法,只是使用字典或对象。
WRITE_MY_LINE(System.out.format(" I = %3d var = %9.6f", i, myVar).toString());
//also tried this :
WRITE_MY_LINE(String.valueOf(System.out.format(" I = %3d var = %9.6f", i, myVar)));
public static void WRITE_MY_LINE(String line) {
buff_out = new BufferedWriter(new FileWriter(ascii_path, true));
buff_out.append(line);
buff_out.newLine();
buff_out.flush();
}
输入是动态的,稍微多一点" python方式"。您可以轻松访问所有值:
data={}
data['Peter'] = {}
data['Max'] = {}
data['Peter']['1/15'] = 12
data['Peter']['2/15'] = 13
...
您的代码更具可读性和更短。