Если я понял вашу логику, вот мое решение:
#method to create samples list
nb_s = 3;nb_d = 2
S = ['s' + str(x) for x in range(1, nb_s + 1)]
D = ['d' + str(x) for x in range(1, nb_d + 1)]
C = ['c' + str(x) for x in range(1, (len(S) * len(D)) + 1)]
print(S);print(D);print(C)
dico_s = {}
for s in S:
dico_d = {}
for d in D:
idx = D.index(d) + len(D) * S.index(s)
dico_d[d] = C[idx]
dico_s[s] = dico_d
print(dico_s)
вывод:
S ->['s1', 's2', 's3']
D ->['d1', 'd2']
C->['c1', 'c2', 'c3', 'c4', 'c5', 'c6']
DICO->{'s1': {'d1': 'c1', 'd2': 'c2'},
's2': {'d1': 'c3', 'd2': 'c4'},
's3': {'d1': 'c5', 'd2': 'c6'}}
--------------------------
**for nb_s = 4 and nb_d = 6**
S -> ['s1', 's2', 's3', 's4']
D -> ['d1', 'd2', 'd3', 'd4', 'd5', 'd6']
C -> ['c1', 'c2', 'c3', 'c4', 'c5', 'c6', 'c7', 'c8', 'c9', 'c10', 'c11', 'c12',
'c13', 'c14', 'c15', 'c16', 'c17', 'c18', 'c19', 'c20', 'c21', 'c22', 'c23', 'c24']
DICO -> {'s1': {'d1': 'c1', 'd2': 'c2', 'd3': 'c3', 'd4': 'c4', 'd5': 'c5', 'd6': 'c6'},
's2': {'d1': 'c7', 'd2': 'c8', 'd3': 'c9', 'd4': 'c10', 'd5': 'c11', 'd6': 'c12'},
's3': {'d1': 'c13', 'd2': 'c14', 'd3': 'c15', 'd4': 'c16', 'd5': 'c17', 'd6': 'c18'},
's4': {'d1': 'c19', 'd2': 'c20', 'd3': 'c21', 'd4': 'c22', 'd5': 'c23', 'd6': 'c24'}}
Остерегайтесь сторонних библиотек COM или третьего лица библиотек.NET, которые тайно выполняют win32 вызовы. Это - то, где мы страдали от наших самых больших головных болей.
По моему опыту, портирование приложения Asp.NET было в основном безупречно. Работайте на машине на 32 бита и на 64 битах, и никакой проблемы не происходит около имения в наличии большей памяти. Это происходит, потому что большим количеством проблем, уже упомянутых (реестр, распараллеливая и так далее), управлял Asp.NET, и необходимо правильно зафиксировать их для выполнения в среде Asp.NET.
Сторона клиента (форма окон) то же произошло, но это при использовании некоторых "небезопасных" API для получения специальных папок или доступа к реестру затем некоторая проблема, может произойти, как уже указано.
Massimo
ОтношенийЧтение и запись в 64 битовых значения не ориентированы на многопотоковое исполнение на платформе на 32 бита. Чтение 64 битовых значений берет две операции, которые могли быть прерваны контекстным переключением. См. статью MSDN о Поточная обработка. Взаимно блокируемый. Читайте для получения дополнительной информации.
Также соглашаются полностью с ответы torial ! :-)
Эта статья имеет много хороших проблем для знания: http://osnews.com/story/20330/Windows_x64_Watch_List
Лично, у моего босса есть 64-разрядный компьютер Vista, и я программирую в 32-разрядном режиме. Мы столкнулись со следующими проблемами:
Реестр для приложений на 32 бита скрыт (вид) в папку Wow6432Node. Не все приложения Вы привыкли находить, что путь для в реестре будет в том узле (SQL Server не будет, например).
SysWow64 в папке C:\Windows может вызвать проблемы DLLs, не являющегося, где они необходимы (у нас была эта проблема w/третья сторона, лицензирующая компонент).
Иногда файлы, в которых Вы нуждаетесь, находятся в "C:\Program Files (x86)", а не "C:\Program Files". Сосет также.
От MSDN doco, среди других соображений:
Во многих случаях, блоки выполнят то же на 32-разрядном или 64-разрядном CLR. Некоторые причины программы для поведения по-другому, когда выполнено 64-разрядным CLR включают:
Структуры, которые содержат участников, которые изменяют размер в зависимости от платформы, такой как любой тип указателя.
Адресная арифметика с указателями, которая включает постоянные размеры.
Неправильная платформа вызывает или объявления COM, которые используют Int32 для дескрипторов вместо IntPtr.
Кастинг IntPtr к Int32
кроме того, расположениям файла по умолчанию.
MSDN подняла немного, замазывают относительно проблем портирования 32-разрядных приложений к 64-разрядной среде выполнения.
http://msdn.microsoft.com/en-us/library/ms973190.aspx
, который Два других блоггера имели ранее, записал о 64-разрядной разработке, когда они работали в команде CLR
x64 позволит Вам обращаться к большей памяти, но, учитывая тот же код, это будет использовать больше памяти, чем x86.